A)tf.Graph.as_default()会创建一个新图,这个图成为当前线程的默认图。
B)在相同进程中创建多个计算图使用tf.Graph.as_default()。如果不创建新的计算图,默认的计算图将被自动创建。
C)如果创建一个新线程,想使用该线程的默认计算图,使用tf.Graph.as_default(),这个函数返回一个上下文管理器(?context?manager),它能够在这个上下文里面覆盖默认的计算图。在代码务必使用with。
#?-*-?coding:?utf-8?-*-
"""
Spyder?Editor
生成新的计算图,并完成常量初始化
[代码1]
[email protected]
"""
import?tensorflow?as?tf
g?=?tf.Graph()
with?g.as_default():
??c?=?tf.constant(5.0)
??assert?c.graph?is?g
??print?"ok"
[代码2]
#?-*-?coding:?utf-8?-*-
"""
Spyder?Editor
生成新的计算图,并完成常量初始化
[email protected]
"""
import?tensorflow?as?tf
with?tf.Graph().as_default()?as?g:
??c?=?tf.constant(5.0)
??assert?c.graph?is?g
??print?"ok"
[代码3]
#?-*-?coding:?utf-8?-*-
"""
Spyder?Editor
生成新的计算图,并完成常量初始化
[email protected]
"""
import?tensorflow?as?tf
with?tf.Graph().as_default()?as?g:
??c?=?tf.constant(5.0)
??assert?c.graph?is?g
??print?"ok"
sess=tf.Session(graph=g)
print?sess.run(c)
sess.close()
[代码4]
#?-*-?coding:?utf-8?-*-
"""
Spyder?Editor
生成新的计算图,并完成常量初始化
[email protected]
"""
import?tensorflow?as?tf
g=tf.get_default_graph()#默认计算图会自动注册
c?=?tf.constant(4.0)
result=c*c
assert?result.graph?is?g#验证是否result操作属于g这个计算图
print?"ok1"
with?tf.Graph().as_default()?as?g1:
??c?=?tf.constant(5.0)
??assert?c.graph?is?g1
??print?"ok2"
??assert?c.graph?is?g
??print?"ok3"
sess=tf.Session(graph=g1)
print?sess.run(c)
sess.close()
运行:
输出验证失败
ok1
ok2
....
assert?c.graph?is?g
AssertionError
....
[代码5]
#?-*-?coding:?utf-8?-*-
"""
Spyder?Editor
生成新的计算图,并完成常量初始化,在新的计算?图中完成加法计算
[email protected]
"""
import?tensorflow?as?tf
g1=tf.Graph()
with?g1.as_default():
???value=[1.,2.,3.,4.,5.,6.]
???init?=?tf.constant_initializer(value)
???x=tf.get_variable("x",initializer=init,shape=[2,3])
???y=tf.get_variable("y",shape=[2,3],initializer=tf.ones_initializer())
???result=tf.add(x,y,name="myadd")
???
???assert?result.graph?is?g1#验证是否result操作属于g1这个计算图
???print?"ok"
with?tf.Session(graph=g1)?as?sess:
???tf.global_variables_initializer().run()
???with?tf.variable_scope("",reuse=True):
???????print(sess.run(tf.get_variable("x")))
???????print(sess.run(tf.get_variable("y")))
???print(sess.run(result))
原文地址:http://blog.51cto.com/13959448/2330923
时间: 2024-11-07 01:04:33