Graph()可以创建图,下面的c1和c的图不是同一个图,g2和c是同一个图
import tensorflow as tf
c = tf.constant(0.0)
g = tf.Graph()
with g.as_default():
c1 = tf.constant(0.0)
print(c1.graph)
print(g)
print(c.graph)
g2 = tf.get_default_graph()
print(g2)
# 重置图需要释放所有资源,否则会报错
tf.reset_default_graph()
g3 = tf.get_default_graph()
print(g3)
重置默认图后,会重新创建一个默认图,g3和g2不相等
<tensorflow.python.framework.ops.Graph object at 0x000001D96493F6D8>
<tensorflow.python.framework.ops.Graph object at 0x000001D96493F6D8>
W0526 18:46:41.901327 12760 deprecation_wrapper.py:119] From C:/projects/p520/p4.py:12: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.
<tensorflow.python.framework.ops.Graph object at 0x000001D96492A940>
<tensorflow.python.framework.ops.Graph object at 0x000001D96492A940>
<tensorflow.python.framework.ops.Graph object at 0x000001D90BB17DA0>
获取前面在图g中定义的张量
# 通过名字获取图中的张量
print(c1.name)
t = g.get_tensor_by_name("Const:0")
print(t," -- ",t.name)
Tensor("Const:0", shape=(), dtype=float32) -- Const:0
获取图中的操作,通过名字
a = tf.constant([[1.0,2.0]])
b = tf.constant([[1.0],[2.0]])
tensor1 = tf.matmul(a,b,name="exop")
print(tensor1)
test = g3.get_tensor_by_name("exop:0")
print(test)
tesop = g3.get_operation_by_name("exop")
print(tesop)
with tf.Session() as sess:
test = sess.run(test)
print(test)
test = tf.get_default_graph().get_tensor_by_name("exop:0")
print(test)
获取图的所有操作:
allops = g3.get_operations()
可以看到,在图中声明常量也算一个操作
[<tf.Operation 'c1' type=Const>, <tf.Operation 'c2' type=Const>, <tf.Operation 'exop' type=MatMul>]