【问题标题】:Computing exact moving average over multiple batches in tensorflow在张量流中计算多批次的精确移动平均值
【发布时间】:2016-06-13 09:41:22
【问题描述】:

在训练期间,我想将最后 N 个 mini-batch 的平均损失写入SummaryWriter,作为平滑非常嘈杂的批损失的一种方式。在 python 中计算并打印它很容易,但我想将它添加到摘要中,以便我可以在 tensorboard 中看到它。这是我现在正在做的一个过于简化的示例。

losses = []
for i in range(10000):
  _, loss = session.run([train_op, loss_op])
  losses.append(loss)
  if i % 100 == 0:
    # How to produce a scalar_summary here?
    print sum(losses)/len(losses)
    losses = []

我知道我可以使用衰减为 1.0 的 ExponentialMovingAverage,但我仍然需要一些方法来每 N 个批次重置一次。真的,如果我所关心的只是可视化张量板中的损失,那么重置可能不是必需的,但我仍然很好奇如何出于其他原因跨批次进行聚合(例如计算测试数据集的总准确度太大批量运行)。

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    您可以手动构造 Summary 对象,如下所示:

    from tensorflow.core.framework import summary_pb2
    
    def make_summary(name, val):
        return summary_pb2.Summary(value=[summary_pb2.Summary.Value(tag=name, 
                                                                    simple_value=val)])
    
    summary_writer.add_summary(make_summary('myvalue', myvalue), step)
    

    【讨论】:

      【解决方案2】:

      可以使用占位符和 feed_dict 将数据从 python 传递到像 tf.scalar_summary 这样的图形函数。

      average_pl = tf.placeholder(tf.float32)
      average_summary = tf.summary.scalar("average_loss", average_pl)
      writer = tf.summary.FileWriter("/tmp/mnist_logs", sess.graph_def)
      
      losses = []
      for i in range(10000):
        _, loss = session.run([train_op, loss_op])
        losses.append(loss)
        if i % 100 == 0:
          # How to produce a scalar_summary here?
          feed = {average_pl: sum(losses)/len(losses)}
          summary_str = sess.run(average_summary, feed_dict=feed)
          writer.add_summary(summary_str, i)
          losses = []
      

      我还没有尝试过,这是从可视化数据中匆忙复制的,但我希望这样的东西会起作用。

      【讨论】:

      • 从 1.0 版开始,必须使用 tf.summary.scalar 而不是 tf.scalar_summary,以及 tf.summary.FileWriter 而不是 tf.train.SummaryWriter。其他一切都应该可以正常工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多