在tensorflow1中,程序一般可以分为两个阶段,第一个阶段定义计算图中的所有阶段,并没有真正进行计算;第二个阶段赋予数据执行计算。
例如:
1、定义计算:
y=3a+2
2、给a赋值a=5,执行计算,得到y=17
系统一般会维护一个默认的计算图,若想查看a所属的计算图,可以用a.graph
TensorFlow支持通过tf.Graph函数来生成新的计算图,不同计算图上的张量和运算都不会共享。
#指定计算运行的设备
tf.device("/gpu:0"):
TensorFlow中的会话(Session)
会话拥有并管理TensorFlow程序运行时的所有资源。
#通过python中的上下文管理器,可以解决异常退出时资源释放的问题
with tf.Session() as sess:
......
变量的作用就是保存和更新神经网络中的参数,如下声明一个23矩阵的变量
weights = tf.Variable(tf.random_normal([2.3]), stddev = 2)) #stddev=2:均值为0,标准差为2
所有的变量都会被自动的加到GraphKeys.VARIABLES这个集合中,可以通过tf.global_variables()函数拿到。
一般来说,一个神经网络的训练会经过几百万轮甚至几亿轮的迭代,这样计算图就会非常大,因此TensorFlow提供了placeholder机制用于提供输入数据。以上的写法就改为:
a = tf.placeholder(tf.float32, shape=(1,2),name="input")
sess = tf.Session()
init_op = tf.global_variables_initializer()
sess.run(init_op)
sess.run(y,feed_dict = {x:3})