tf.Session()
在TensorFlow的世界里,变量的定义和初始化是分开的,所有关于图变量的赋值和计算都要通过tf.Session的run来进行。想要将所有图变量进行集体初始化时应该使用tf.global_variables_initializer。
session用于执行命令,对话控制。sess.run()用于执行某一个小图片上的功能。
sess.run()
feed_dict
- 给使用placeholder创建出来的tensor赋值
- feed 使用一个 ‘值’ 临时替换一个 op 的输出结果。提供 feed 数据作为 run() 调用的参数。feed 只在调用它的方法内有效,方法结束,feed 就会消失。
import tensorflow as tf
y = tf.Variable(1)
b = tf.identity(y)
with tf.Session() as sess:
tf.global_variables_initializer().run()
print(sess.run(b,feed_dict={y:3})) #使用3 替换掉
#tf.Variable(1)的输出结果,所以打印出来3
#feed_dict{y.name:3} 和上面写法等价
print(sess.run(b)) #由于feed只在调用他的方法范围内有效,所以这个打印的结果是 1
必须先构建(定义)graph,之后才能运行(启动)graph。
tf.Graph
两种用于运行计算图(graph)的会话(session)
tf.Session()
tf.InteractivesSession()
tf.Session()
fetch 取回
feed 注入
用途
- 临时替代graph中任意操作的输入tensor
- 对graph中任何op提交补丁(插入一个tensor)
使用方式
- feed_dict提供数据,作为sess.run( )调用的参数。使用tf.placeholder( ),为某些操作的输入创建占位符。
- 如果没有正确提供tf.placeholder( ),feed操作将产生错误。
- feed注入的值不能是tf的tensor对象,应该是Python常量、字符串、列表、numpy ndarrays,TensorHandles。
tf.InteractivesSession()
当python编辑环境是shell、IPython等交互式环境时,用方法tensor.eval( ),operation.run( ) 代替sess.run( )
with
上下文管理器在对象内实现了两个方法:enter() 和__exit__()
enter()方法会在with的代码块执行之前执行,exit()会在代码块执行结束后执行。
exit()方法内会自带当前对象的清理方法。