TensorFlow中能否向已合并的summary_op追加新摘要?
解决方案:给已合并的summary_op追加新摘要
这个场景确实有点棘手——没法修改生成summary_op的内置函数,还得用slim的训练接口。不过其实我们可以通过解析已合并的summary_op来“拆出”原有摘要,再和新的摘要重新合并,具体做法如下:
核心思路
tf.summary.merge()生成的summary_op,它的inputs属性其实保存了所有被合并的原始summary张量。我们只需要取出这些原有张量,和新的摘要列表合并后重新生成一个新的merged op就行。
代码示例
train_op, summary_op = model_fn(image) # 你的自定义摘要列表 some_other_summary_list = [ tf.summary.scalar("custom_metric", my_metric), tf.summary.histogram("layer_weights", weights) ] # 提取原有summary_op中的所有原始摘要张量 original_summaries = summary_op.inputs # 合并原有摘要和新摘要,生成新的summary_op new_summary_op = tf.summary.merge( original_summaries + some_other_summary_list, name="enhanced_summary_op" ) # 把新的summary_op传入训练函数 slim.learning.train(train_op, summary_op=new_summary_op)
注意事项
- 这个方法只适用于由
tf.summary.merge()生成的summary_op(也就是你场景里的情况),如果是tf.summary.merge_all()生成的,inputs可能会有差异,但你的问题场景完全匹配。 - 重新合并时可以自定义新的name,避免和原有summary_op重名导致的冲突。
内容的提问来源于stack exchange,提问作者YW P Kwon
相关产品推荐
相关产品推荐

