【发布时间】:2017-10-04 11:56:24
【问题描述】:
我目前正在构建我的操作两次,一次用于训练,一次用于验证,将 variable_scope 设置为 reuse=True 以确保我只有一组权重要训练。
为了组织操作,我将操作构建调用包含在一个
中with tf.name_scope='train':
同样地做同样的验证。这使我可以轻松地创建一些摘要挂钩,只需调用
tf.summary.merge(tf.get_collection(tf.GraphKeys.SUMMARIES, scope='train'))
最后获取训练图或验证图的摘要,并使用适当的摘要保存程序保存这些摘要。
不幸的是,这也意味着训练摘要中的标量不会与验证中的等效标量显示在同一图上(因为它们位于不同的名称范围内)。
是否有一种方法可以在保存摘要之前删除名称范围,或者是否有另一种方法可以将特定案例的摘要包装在一起而不应用名称范围?还是我需要手动跟踪每个案例的摘要?
编辑:
澄清一下,我的代码如下所示:
with tf.name_scope('train'):
create_network() # Summaries create in here.
with tf.name_scope('validation'):
create_network(reuse=True) # More summaries in here.
train_summaries = tf.summary.merge(tf.get_collection(tf.GraphKeys.SUMMARIES, scope='train'))
validation_summaries = tf.summary.merge(tf.get_collection(tf.GraphKeys.SUMMARIES, scope='validation'))
# Down here, create the summary saver hooks, etc.
【问题讨论】: