关于 python:TensorBoard 记录与训练分开的统计数据
TensorBoard recording stats separate from training
我正在尝试使用 TensorBoard 来显示一些神经网络训练运行的图表。 (也就是说,训练期间的测试和验证准确度图,而不仅仅是网络结构。)有一些示例代码
以及本网站上的一些问题,所有这些似乎都遵循与示例代码相同的模式。也就是说,模式总是围绕着类似
|
1
|
summary, _ = sess.run([merged, train_step], ...
|
所以基本上,运行训练步骤和记录统计数据以显示图表的操作被混为一谈。
就目前而言,这很好,但我正在尝试将图表改进为现有程序,该程序不可避免地会以稍微不同的方式做事,因此示例代码不会按原样工作。我真正想做的是隔离一些只记录统计信息的代码,与现有代码分开来进行训练。
如何在主训练循环中记录 TensorBoard 的统计数据,但与进行训练的代码分开?
相关讨论
- 换句话说,在每个训练步骤中,您运行一些最终返回一些标量值(称为准确性)的代码,并且您想使用单独的
sess.run(...) 将其写入张量板摘要,我是否正确理解了您的问题? -
@openmark 在每个训练步骤中,我都会运行一些最终返回标量值的代码,并且我想在单独的代码行中将其写入张量板摘要中,是的。编写张量板摘要是否需要涉及
sess.run 的原因?如果是这样,那么是的,在单独的电话中。
您可以手动创建存储标量值的
|
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 |
或者,您可以使用
|
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 summary_writer = tf.summary.FileWriter("path_to_log_dir") with tf.Session() as sess: feed_dict = {scalar_pl_1: scalar_value_1, scalar_pl_n: scalar_value_n} |