TensorBoard 记录统计数据与训练分开

Posted

技术标签:

【中文标题】TensorBoard 记录统计数据与训练分开【英文标题】:TensorBoard recording stats separate from training 【发布时间】:2018-11-20 00:19:41 【问题描述】:

我正在尝试使用 TensorBoard 显示神经网络训练运行的一些图表。 (即训练期间的测试和验证准确度图,而不仅仅是网络结构。)有一些例子code

以及本网站上的一些问题,所有这些似乎都遵循与示例代码相同的模式。也就是说,模式总是围绕着类似

summary, _ = sess.run([merged, train_step], ...

所以基本上,运行训练步骤和记录统计数据以显示图表的操作被混为一谈。

就目前而言这很好,但我正在尝试将图表改进为现有程序,该程序不可避免地会以稍微不同的方式做事,因此示例代码不会按原样工作。我真正想做的是隔离一些只记录统计数据的代码,与现有代码分开来进行训练。

您如何在主训练循环中记录 TensorBoard 的统计数据,但与进行训练的代码分开?

【问题讨论】:

换句话说,在每个训练步骤中,您都会运行一些代码,这些代码最终会返回一些标量值(称为准确度),并且您想使用单独的sess.run(...) 将其写入张量板摘要,我明白了吗你的问题正确吗? @openmark 在每个训练步骤中,我都会运行一些最终返回标量值的代码,并且我想在单独的代码行中将其写入张量板摘要中,是的。编写张量板摘要是否有理由需要涉及sess.run?如果是这样,那么是的,在单独的调用中。 【参考方案1】:

您可以手动创建存储标量值的tf.Summary 对象并将其传递给tf.summary.FileWriter,如下例所示:

summary_writer = tf.summary.FileWriter("path_to_log_dir")
# ...
for i in range(max_training_steps):
  # compute the values of interest
  scalar_value_1 = ...
  # ...
  scalar_value_n = ...

  # manually create tf.Summary object
  summary = tf.Summary(
    value=[tf.Summary.Value(tag="Metrics_1", simple_value=scalar_value_1),
           # ...
           tf.Summary.Value(tag="Metrics_n", simple_value=scalar_value_n)])
  summary_writer.add_summary(summary, i)
# ...
summary_writer.close()

或者,您可以使用tf.placeholder 作为张量来定义tf.summary.scalar() 操作并在运行时提供实际值:

scalar_pl_1 = tf.placeholder(tf.float32)
tf.summary.scalar("Metrics_1", scalar_pl_1)
# ...
scalar_pl_n = tf.placeholder(tf.float32)
tf.summary.scalar("Metrics_n", scalar_pl_n)

# Merge all summaries
merged = tf.summary.merge_all()

summary_writer = tf.summary.FileWriter("path_to_log_dir")

with tf.Session() as sess:
  for i in range(max_training_steps):
    # compute scalar values of interest
    scalar_value_1 = ...
    scalar_value_n = ...

    feed_dict = scalar_pl_1: scalar_value_1, scalar_pl_n: scalar_value_n
    summary = sess.run(merged, feed_dict=feed_dict)
    summary_writer.add_summary(summary, i)
# ...
summary_writer.close()

【讨论】:

以上是关于TensorBoard 记录统计数据与训练分开的主要内容,如果未能解决你的问题,请参考以下文章

PyTorch Tensorboard 与文档中的描述不符

Tensorflow学习教程------tensorboard网络运行和可视化

TensorFlow - 从 TensorBoard TFEvent 文件中导入数据?

Tensorflow Estimator 框架中没有 Tensorboard 日志记录

TensorBoard 找不到标量统计信息

详解Tensorboard及使用教程