Как использовать несколько сводных коллекций в Tensorflow?

У меня есть 2 отличительные группы резюме. Один собирается один раз за партию, другой — один раз за эпоху. Как я могу использовать 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              :(

person y.selivonchyk    schedule 21.11.2016    source источник
comment
Сначала нашел этот вопрос, но искал 2 не различающиеся группы резюме. Этот подход stackoverflow.com/questions/42418029/ работает немного проще для немного другого варианта использования. Вы можете просто использовать названия резюме.   -  person Maikefer    schedule 26.10.2017


Ответы (1)


Задача решена. Параметр collections сводки должен быть списком. Решение:

  # 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...) :)
person y.selivonchyk    schedule 21.11.2016