查看: 1713|回复: 1

tf.Graph().as_default() 详解

[复制链接]

665

主题

1234

帖子

6568

积分

xdtech

Rank: 5Rank: 5

积分
6568
发表于 2020-4-3 00:26:45 | 显示全部楼层 |阅读模式
在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()以后就可以在外面使用。


回复

使用道具 举报

665

主题

1234

帖子

6568

积分

xdtech

Rank: 5Rank: 5

积分
6568
 楼主| 发表于 2020-4-3 00:26:51 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表