原文链接:www.cnblogs.com/qjoanven/p/7736025.html
1、tensor.get_shape()返回的是元组,不能放到sess.run()里面,这个里面只能放operation和tensor。
2、tf.shape()返回的是一个tensor。要想知道是多少,必须通过sess.run()
一、一个graph实例就是一个图,由一组operation对象和tensor对象构成,每个operation对象表示最小的计算单元,每个tensor对象表示在operation间传递的基本数据单元。
二、如果你没有注册自己的图,系统会提供一个默认图,你可通过调用tf.get——default——graph()显示地访问这个图,也可以不理会这个图,因为调用任一个operation函数时,如调用constant op,c=constant(4.0),一个表示operation的节点会自动添加到这个图上,此时,c.graph就指这个默认图。
三、如果我们创建一个graph实例,并想用它取代上面的默认图,把它指定为一个新的默认图,至少是临时换一下,可以调用该graph实例的as_default()方法,并得到一个python中的上下文管理器(context manager),来管理临时默认图的生命周期,即with。。。下的代码区域。
1、向默认图添加一个操作
c=tf.constant(4.0)
assert c.graph is tf.get_default_graph()
2、在上下文环境中覆盖了当前的默认图。
g=tf.constant(4.0)
with g.as_default():
c=tf.constant(30.0)
assert c.graph is g
三、tf.Graph.as_default()
返回一个使得当前图成为默认图的上下文管理器。如果你希望在新线程里使用默认图,你必须在此线程的函数里明确添加with g.as_default():
1、g=tf.Graph()
with g.as_default():
c=constant(5.0)
assert c.graph is g
2、with tf.Graph().as_default() as g:
c=tf.constant(5.0)
assert c.graph is g
返回:一个用于将当前图作为默认图的上下文管理器
四、tf.Graph.finalize()
结束这个图,使它只读,在调用g.finalize()后,不能向g添加任何新的操作。当这个图在多线程间共享时,为了保证没有操作添加到这个图,可以调用这个方法,例如当使用一个QueueRunner时。
tf.Graph.finalized
如果这个图已经结束,,它为真
五、tf.Graph.control_dependencies(control_inputs)
返回一个明确控制依赖的上下文管理器,使用with关键字明确所有在上下文内创建的操作应该在contuol_inputs上有控制依赖。
with g.control_dependencies([a,b,c])
d=
e=
d and e will only run after a ,b,and c have executed.
control_inputs:一个Operation或者Tensor对象列表,它上下文内定义的操作被运行前被执行或者计算。也可以为None来清除控制依赖。