先附上Tensorflow官网对于此函数的解释:
as_default源自于Graph类,这个类的作用就是展示数据流图。
而as_default的返回值是使此图成为一个默认的图的上下文管理器,
用于在相同的进程中创造多个图片。有一个总领的default graph,所有的操作都会添加到这个graph中,除非显示的创建了另一个graph。按我的理解,语句"with g1.as_default"在此语句下所进行的所有操作都是针对g1这个图的,语句"with g2.as_default"在此语句下所进行的所有操作都是针对g2这个图,在default下面你可以创建很多个图,但是都在一个“画本”里面。
代码实例,来源:https://blog.csdn.net/scut_salmon/article/details/84660145
g1 = tf.Graph()
g2 = tf.Graph()
# 在计算图g1中定义张量和操作
with g1.as_default():
a = tf.constant([1.0, 1.0])
b = tf.constant([1.0, 1.0])
result1 = a + b
print(a.graph, b.graph)
with g2.as_default():
a = tf.constant([2.0, 2.0])
b = tf.constant([2.0, 2.0])
result2 = a + b
print(a.graph, b.graph)
# 在g1计算图上创建会话
with tf.Session(graph=g1) as sess:
out = sess.run(result1)
print('with graph g1, result: {0}'.format(out))
print('default_graph', tf.get_default_graph())
with tf.Session(graph=g2) as sess:
out = sess.run(result2)
print('with graph g2, result: {0}'.format(out))
print('default_graph', tf.get_default_graph())