TensorFlow基本语法

最近开始接触TensorFlow,感觉它的语法还是比较繁琐的。
把TensorFlow里面和python差别很大的地方笔记一下:

#定义一个常量
hello = tf.constant('Hello,Tensorflow')
a = tf.constant(10)

#定义一个变量
x = tf.Variable(tf.zeros[4,4])
init = tf.initalize_all_variables()

这里最后一行必须得写,位置在所有常量和变量定义完之后,不写会报错

#占位符
x = tf.placeholder(tf.float32,[None,784])

这是当还没有确定要给变量赋什么值,先申请个变量名和空间,这里传的是变量的shape

"""
图的概念
x = 3
y = 4
z = x + y
print(z)
"""

如果想像python一样执行类似的操作,就得先理解tf的图的作用。x,y,z分别是三个tensor对象,对象间的运算称之为操作(op), tf不会去一条条地执行各个操作,而是把所有的操作都放入到一个图(graph)中,图中的每一个结点就是一个操作。然后行将整个graph 的计算过程交给一个 TensorFlow 的Session, 此 Session可以运行整个计算过程,比起操作(operations)一条一条的执行效率高的多。
所以上述操作在tf中是这样呈现的:

x = tf.Variable(3)
y = tf.Variable(4)
z = x + y
init = tf.initialize_all_variables()
with tf.Session() as sess:
    sess.run(init)
    print(sess.run(z))

Session需要先创建,使用完后还需要释放。因此我们使用with…as…语句,让系统自动释放。

#加法和乘法
a = tf.placeholder(tf.int16)
b = tf.placeholder(tf.int16)
add = tf.add(a, b)
mul = tf.mul(a, b)

with tf.Session() as sess:
    print('a+b=',sess.run(add, feed_dict={a: 2, b: 3}))
    print('a*b=',sess.run(mul, feed_dict={a: 2, b: 3}))  

再看一个实例,这个实例可以用来理解tf传值的基本操作

#coding:utf-8
import tensorflow as tf

# 创建一个变量state,初始值是0,名称是counter
state = tf.Variable(0, name='counter')

# 定义常量 one
one = tf.constant(1)

# 定义加法步骤 (注: 此步并没有直接计算,再调用时才计算)
new_value = tf.add(state, one)

# 将 State 更新成 new_value
update = tf.assign(state, new_value)



init = tf.initialize_all_variables()

with tf.Session() as sess:
    sess.run(init)
    print sess.run(state)
    print "第一次打印"
    for _ in range(3):
        sess.run(update)
        print(sess.run(state))
        print(sess.run(one))


输出结果是:
0
第一次打印
1
1
2
1
3
1

你可能感兴趣的:(TensorFlow)