python - tensorflow 摘要: how to get items before evaluation

标签 python tensorflow

我想获取使用 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/

相关文章:

python - 如何在自定义 zipline 包中使用自定义日历?

python - 导入错误 : No module named tensorflow in Spyder

neural-network - 如何计算 tensorflow 模型中可训练参数的总数?

python - 如何使用 tf.scatter_add 在 tensorflow 中增加矩阵元素?

python - 如何从 Python 中创建的 Dataframe 中删除索引?

python - gethostbyaddr() 在 Python 3 中引发 UnicodeDecodeError

python - 如何使用 Python 解析维基百科 XML 转储?

python - 使用 Keras 进行时间序列预测 - 模型值错误

python - 如何使用 Tensorflow 后端在 Keras 上获取 categorical_cross_entropy 的梯度?

python - 如何根据父字段的值限制子字段的选择?