2016-11-21 4 views
9

J'ai deux groupes de résumés distincts. Un est collecté une fois par lot, un autre est collecté une fois par époque. Comment puis-je utiliser merge_all_summaries(key='???') pour collecter des résumés dans ces deux groupes séparément? Le faire manuellement est toujours une option, mais il semble y avoir une meilleure façon.Comment utiliser plusieurs collections récapitulatives dans Tensorflow?

Illustration de la façon dont je pense que cela devrait fonctionner:

 # 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    :(
+0

Trouvé cette question en premier, mais recherché 2 groupes non distinctifs de résumés. Cette approche https://stackoverflow.com/questions/42418029/unable-to-use-summary-merge-in-tensorboard-for-separate-training-and-evaluation fonctionne un peu plus facilement pour un cas d'utilisation légèrement différent. Vous pouvez simplement utiliser les noms des résumés. – Maikefer

Répondre

15

Problème résolu. collections paramètre d'un résumé est censé être une liste. Solution:

# 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...) :) 

Modifier. Changement syntaxique dans 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.summaries.merge_all()    # -> (MergeSummary...) :) 
    tf.summaries.merge_all(key='per_epoch') # -> (MergeSummary...) :)