TensorBoard recording stats separate from training
我正在尝试使用 TensorBoard 来显示一些神经网络训练运行的图表。 (也就是说,训练期间的测试和验证准确度图,而不仅仅是网络结构。)有一些示例代码
以及本网站上的一些问题,所有这些似乎都遵循与示例代码相同的模式。也就是说,模式总是围绕着类似
1 | summary, _ = sess.run([merged, train_step], ... |
所以基本上,运行训练步骤和记录统计数据以显示图表的操作被混为一谈。
就目前而言,这很好,但我正在尝试将图表改进为现有程序,该程序不可避免地会以稍微不同的方式做事,因此示例代码不会按原样工作。我真正想做的是隔离一些只记录统计信息的代码,与现有代码分开来进行训练。
如何在主训练循环中记录 TensorBoard 的统计数据,但与进行训练的代码分开?
您可以手动创建存储标量值的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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() |
或者,您可以使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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() |