shaoheshaohe 发表于 2020-4-3 00:26:45

tf.Graph().as_default() 详解

在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()以后就可以在外面使用。


shaoheshaohe 发表于 2020-4-3 00:26:51

https://blog.csdn.net/nanhuaibeian/article/details/101862790
页: [1]
查看完整版本: tf.Graph().as_default() 详解