如何在Tensorflow中使用多个汇总集合?

14

我有两个不同的摘要组。一个在每一批次中收集一次,另一个在每一轮中收集一次。我如何使用merge_all_summaries(key='???')来分别收集这两个组中的摘要?手动执行是一种选择,但似乎有更好的方法。

以下是我认为它应该如何工作的示例:

      # once per batch 
      tf.scalar_summary("loss", graph.loss)
      tf.scalar_summary("batch_acc", batch_accuracy)
      # once per epoch
      gradients = tf.gradients(graph.loss, [W, D])
      tf.histogram_summary("embedding/W", W, collections='per_epoch')
      tf.histogram_summary("embedding/D", D, collections='per_epoch')

      tf.merge_all_summaries()                # -> (MergeSummary...) :)
      tf.merge_all_summaries(key='per_epoch') # -> NONE              :(

发现了这个问题,但是搜索了两个不同的摘要组。这种方法 https://dev59.com/0VgQ5IYBdhLWcg3wqFoF 对于稍微不同的用例来说更容易一些。你可以简单地使用摘要的名称。 - Maikefer
1个回答

30

问题已解决。summarycollections参数应该是一个列表。

  # once per batch 
  tf.scalar_summary("loss", graph.loss)
  tf.scalar_summary("batch_acc", batch_accuracy)
  # once per epoch
  tf.histogram_summary("embedding/W", W, collections=['per_epoch'])
  tf.histogram_summary("embedding/D", D, collections=['per_epoch'])

  tf.merge_all_summaries()                # -> (MergeSummary...) :)
  tf.merge_all_summaries(key='per_epoch') # -> (MergeSummary...) :)

编辑。TF中的语法更改:

# once per batch 
  tf.summary.scalar("loss", graph.loss)
  tf.summary.scalar("batch_acc", batch_accuracy)
  # once per epoch
  tf.summary.histogram("embedding/W", W, collections=['per_epoch'])
  tf.summary.histogram("embedding/D", D, collections=['per_epoch'])

  tf.summary.merge_all()                # -> (MergeSummary...) :)
  tf.summary.merge_all(key='per_epoch') # -> (MergeSummary...) :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接