|
在TensorFlow程序中,系统会自动维护一个默认的计算图,通过tf.get_default_graph()函数可以获取当前默认的计算图。
如果你想在一个进程里创建多个图,可能会用到这个方法
如果没有显式创建一个图的话,系统提供了一个全局默认的图,默认把所有的操作都添加到全局默认图中。
配合 with 关键词使用,可以只把 with 块里的操作添加到默认图中。
默认图是当前线程的一个属性,如果你创建了一个新的线程,想使用全局默认图,必须显式调用这个方法
三、为什么要写 .as_default()
比如下面的例子,目的是将这个图设置为默认图,会话设置成默认对话,这样的话在with语句的外面也能使用这个会话执行。
比如下面的例子
def train():
with self.graph.as_default():
with self.sess.as_default():
trainStep()
def trainStep():
self.sess.run(loss)
#如果没有.as_default()操作就会报错,
#因为普通的会话只有在with语句里面上下文管理器里面有效,出去的而话默认有sess.close()操作。
#但是as_default()以后就可以在外面使用。
|
|