我想获取使用 tensorflow
中的模型创建的摘要列表。我知道 one can get a dictionary of key:value of evaluated summaries 。
在从 summary_proto
对象评估摘要键之前,可以获取一组摘要键吗?我需要它来初始化列表字典,在其中存储每个时期的摘要,而不是存储字典列表。
summary_proto = tf.Summary()
最佳答案
使用以下代码按需初始化列表字典可能是最简单的:
train_op = ...
summary_op = tf.merge_all_summaries()
summaries = {}
sess = tf.Session()
for _ in range(NUM_EPOCHS):
_, summary_str = sess.run([train_op, summary_op], feed_dict=feed_dict)
summary_proto = tf.Summary()
summary_proto.ParseFromString(summary_str)
for val in summary_proto.value:
try:
list_for_tag = summaries[val.tag]
except KeyError:
list_for_tag = []
summaries[val.tag] = list_for_tag
# Assuming all summaries are scalars.
list_for_tag.append(val.simple_value)
<小时/>
但是,为了回答您原来的问题,可以通过评估各个摘要操作的标签
输入来获取各个标签(这很可能不依赖于训练结果):
summaries = {}
sess = tf.Session()
all_summary_tensors = tf.get_collection(tf.GraphKeys.SUMMARIES)
for summary_t in all_summary_tensors:
tag_input = summary_t.op.inputs[0] # The tag input is the 0th input.
tags = sess.run(tag_input)
if isinstance(tags, str):
summaries[tags] = []
else:
for tag in tags.flatten():
summaries[tag] = []
关于python - tensorflow 摘要: how to get items before evaluation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34693708/