首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止摘要(或范围)“扩散”从tf.scalar_summary迁移到tf.summary.scalar?

如何防止摘要(或范围)“扩散”从tf.scalar_summary迁移到tf.summary.scalar?
EN

Stack Overflow用户
提问于 2017-05-29 19:08:27
回答 2查看 127关注 0票数 0

回到2016年之前-11-30,我可以使用TensorFlow/TensorBoard代码,如下所示,创建一个包含变量“global_step_at_epoch”的单个作用域,该变量显示模型运行的每个阶段达到的全局步骤。

但是,由于用scalar_summary代替了summary.scalar,如下所示,我为每个时代提供了一个新的范围。因此,在n历元完成后,我得到了“全局_step_at_epoch_1”、“全局_step_ after _2”、“全局_step_after_2”的作用域和TensorBoard面板。‘'global_step_at_epoch_n',每一个点都有一个点。

如何从scalar_summary迁移到summary.scalar,以便下面的代码(或类似的代码)将所有单独的作用域合并到一个单独的作用域中,就像scalar_summary过去所做的那样?

代码语言:javascript
复制
global_step = tf.Variable(0, trainable=False, name='global_step')
test_writer = tf.summary.FileWriter(...)

with tf.Session(config=tf.ConfigProto(allow_soft_placement=True,
                                      log_device_placement=FLAGS.log_device_placement)) as sess:
    sess.run(tf.initialize_all_variables())

    test_writer.add_summary(sess.run(tf.summary.scalar('global_step_at_epoch', 0)), 0)

    for ep in range(epochs):

        mini_batches = ...

        for mini_batch in mini_batches:

            gs = int(sess.run(global_step))

        test_writer.add_summary(sess.run(tf.summary.scalar('global_step_at_epoch', gs)), ep + 1)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-06 20:59:58

这已经可以在tf.name_scope上下文管理器中实现,方法是在第一次使用该管理器时命名它,并在您希望向现有范围中添加新项时再次起诉它(而不需要“扩散”):

代码语言:javascript
复制
with tf.name_scope('foo') as a_scope:
   # some graph elements A

# Elsewhere ...

with tf.name_scope(a_scope):
  # additional graph elements B

这将把A和B元素放在一个作用域'foo'中,而

代码语言:javascript
复制
with tf.name_scope('foo') as:
   # some graph elements A

with tf.name_scope('foo'):
  # additional graph elements B

将元素分别放置在单独的作用域foofoo_1中。

票数 0
EN

Stack Overflow用户

发布于 2017-05-30 07:38:23

我不知道它以前是如何工作的,但目前摘要的使用与其他节点的使用基本一致,因为您在构建阶段只创建一次摘要,然后在培训期间在Session中反复调用它。

将此应用于您的示例,可以提供:

代码语言:javascript
复制
global_step = tf.Variable(0, trainable=False, name='global_step')
test_writer = tf.summary.FileWriter(...)
# create summary op once here
gs_summary = tf.summary.scalar('global_step_at_epoch', global_step)

with tf.Session(config=tf.ConfigProto(allow_soft_placement=True,
                                      log_device_placement=FLAGS.log_device_placement)) as sess:
    sess.run(tf.initialize_all_variables())
    test_writer.add_summary(sess.run(gs_summary), 0)
    for ep in range(epochs):
        mini_batches = ...
        for mini_batch in mini_batches:
            gs = int(sess.run(global_step))
        test_writer.add_summary(sess.run(gs_summary), ep + 1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44249086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档