sess.graph和tf.get_default_graph()在张应力板上给出了同样的结果。根据手册,我不太清楚他们之间有什么区别。有人能帮我解释一下差异吗?是否可以提供一个sess.graph和tf.get_default_graph()不能互换使用的例子?
#!/usr/bin/env python
# vim: set noexpandtab tabstop=2 shiftwidth=2 softtabstop=-1 fileencoding=utf-8:
import tensorflow as tf
import sys
x = tf.Variable(1.0)
with tf.name_scope('ns_loss'):
loss = tf.square(x)
with tf.name_scope('ns_adam'):
train_op = tf.train.AdamOptimizer().minimize(loss)
init = tf.global_variables_initializer()
tf.summary.scalar('scalar_loss', loss)
merged_summary_op = tf.summary.merge_all()
with tf.Session() as sess:
sess.run(init)
summary_writer = tf.summary.FileWriter(logdir=sys.argv[1])
summary_writer.add_graph(graph=tf.get_default_graph())
#summary_writer.add_graph(graph=sess.graph)
for i in xrange(100):
sess.run(train_op)
summary_writer.add_summary(
summary = sess.run(merged_summary_op)
, global_step = i
)发布于 2017-12-12 14:33:19
tf.get_default_graph()总是返回当前的计算图。例如,它是在会话开始之前就定义了x和loss节点的图形。
使用tf.Session()创建会话时,可以选择指定要使用的非默认图形。在您的示例中,它没有被指定:
如果在构造会话时没有指定
graph参数,则将在会话中启动默认图。
在一个脚本中有多个图是很有可能的,例如,当一个图从磁盘中恢复时。
还请注意,会话完成后,默认图仍然存在,因此它们的生存期不同。
https://stackoverflow.com/questions/47774994
复制相似问题