2つの部分からなる大きなグラフがあり、順番に実行します。どちらにも要約があります。
私はノードで要約を呼び出していました
merged_summary = tf.summary.merge_all()
しかし、それが意味をなす前に評価されたグラフの後半でテンソルを引き起こすことに気づきました。
では、グラフの半分の要約のみをマージするにはどうすればよいですか?
最初のグラフと2番目のグラフの要約の2つのリストがあると仮定します。つまり、次のようになります。
_summaries_first = [tf.summary.image("my_first_graph_input", image), ...]
summary_second = [tf.summary.scalar("my_second_graph_loss"), ..]
_
各リストを単一の要約操作にマージします。
_first_graph_summary_op = tf.summary.merge(summaries_first)
second_graph_summary_op = tf.summary.merge(summary_second)
_
これで、各グラフでsess.run()
を実行するたびに、対応する要約操作を評価して記述します。
tf.summary.merge
、マージする要約のリストを渡します。たとえば、要約がある場合:
cost_summary = tf.summary.scalar('cost_sum', cost) # for some 'cost' tensor
grad_summary = tf.summary.scalar('grad_sum', grad) # for some 'grad' tensor
名前でそれらをマージできます:
merged = tf.summary.merge([cost_summary, grad_summary])
したがって、グラフの各部分に対してマージされた要約演算子を作成し、そうすることが理にかなっているときにそれらを呼び出すだけです。