在Tensorflow中,系统会自动维护一个默认的计算图,通过tf.get_default_graph函数可以获取当前默认的计算图:
假如定义了两个变量:a = tf.constant([1.0,2.0],name="a"),b=tf.constant([2.0,3.0],name="b")
调用a.graph 得到的内容和tf.get_default_graph()是相同的,即a.graph is tf.get_default_graph()为真。
也可以自定义计算图:通过g1=tf.Graph()可以定义计算图 ,如果给这个计算图添加代码,可使用
with g1.as_default():
v = tf.get_variable("v",initializer=tf.zeros_initializer(shape=[1]))
不同计算图中的同名变量是不相互共享的,如果要执行计算图中的代码,则执行:
with tf.Session(graph=g1) as sess:
tf.global_variables_initializer().run()
with tf.variable_scope("",reuse=True):
print(sess.run(tf.get_variable("v"))
针对不同的计算图,需要通过不同的session执行其中的代码,
也可以指定运行某个计算的设备:
with g1.device('/gpu:0'):
result = a+ b
这两行代码指定了 加法运算在0号gpu上运行。
计算图中的资源很多,和进行管理呢,tensorflow 提供了几个管理资源的集合,我们可以把相应的资源加入相应的集合集中进行管理:
通过tf.add_to_collection将资源加入集合,tf.get_collection()获取集合中的资源进行处理。