如何在张量流中合并并非所有摘要?

Posted

技术标签:

【中文标题】如何在张量流中合并并非所有摘要?【英文标题】:How to merge not all summaries in tensorflow? 【发布时间】:2018-03-21 05:20:05 【问题描述】:

我有两部分的大图,我依次运行。两者都有摘要。

我用节点调用摘要

merged_summary = tf.summary.merge_all()

但注意到,它会导致图后半部分的张量在它有意义之前被评估。

那么,如何仅合并一半图表的摘要?

【问题讨论】:

如果任何一个答案对您有所帮助,请将其标记为正确,以便人们在将来遇到您的问题时知道什么是有效的。 再次提醒您接受您认为最好的答案,以便其他人在遇到您的问题时知道什么有效... 【参考方案1】:

您可以使用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])

因此,只需为图表的每个部分创建合并的汇总运算符,并在需要时调用它们。

【讨论】:

【参考方案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() 时,评估它的相应摘要操作并编写它。

【讨论】:

以上是关于如何在张量流中合并并非所有摘要?的主要内容,如果未能解决你的问题,请参考以下文章

如何在张量流中对张量进行子集化?

在张量流中,如何迭代存储在张量中的输入序列?

如何在张量流中张量的某些索引处插入某些值?

如何在张量流中恢复会话? [复制]

python 如何在张量流中保存和恢复模型

如何在张量流中使用索引数组?