在 TensorFlow 中存储多次运行的摘要编写器的建议做法是啥?

Posted

技术标签:

【中文标题】在 TensorFlow 中存储多次运行的摘要编写器的建议做法是啥?【英文标题】:What is the suggested practice for storing multiple runs of a summary writer in TensorFlow?在 TensorFlow 中存储多次运行的摘要编写器的建议做法是什么? 【发布时间】:2016-10-26 10:07:09 【问题描述】:

我正在学习使用 TensorBoard,每次启动 tensorboard 时,我都会在终端中收到以下消息:

WARNING:tensorflow:Found more than one graph event per run. Overwriting the graph with the newest event.

我认为是因为我多次使用相同的名称运行同一个模型。我只想多次运行我的模型并能够使用 tensorflow 检查它在做什么。正在重新运行:

tensorboard --logdir=path/to/log-directory

不是通常的方法吗?或者当我想多次运行同一个模型并探索不同的学习算法、步长、初始化等时,做这类工作的建议是什么。每次都设置一个新的日志目录真的有必要吗?

【问题讨论】:

【参考方案1】:

当您在图形中导出模型时,TensorFlow 会创建一个包含日志信息的新文件。因此,每次运行它时,新信息都会添加到同一个文件夹中。

由于 tensorboard 无法区分一个模型和另一个模型,它会显示警告。所以是的,您应该在每次迭代中使用不同的日志文件夹。事实上,一些示例在运行图表之前删除了日志目录。

【讨论】:

【参考方案2】:

当您创建tf.summary.FileWriter() 时,您为 TF 提供了一个目录,它将在其中写入事件文件并向其中添加摘要和事件。每个新文件都由名称、时间戳和您的机器组成。因此,当您多次运行编写器时,它会在您的目录中创建一个新文件。尝试运行几次,您会得到类似 ls -1 的结果(我运行了 4 次):

events.out.tfevents.1492391591.salvadordali-laptop
events.out.tfevents.1492395088.salvadordali-laptop
events.out.tfevents.1492395117.salvadordali-laptop
events.out.tfevents.1492395120.salvadordali-laptop

您的警告告诉您完全相同:发现许多运行,将使用最后一个。您可以忽略它,因为它将使用最新的运行(基于时间戳)。

如果您不喜欢该警告,您可以:

为每次运行创建不同的文件夹(有助于比较绘图或图形执行) 每次运行后删除文件rm -R logs/(如果日志是您的目录)

【讨论】:

以上是关于在 TensorFlow 中存储多次运行的摘要编写器的建议做法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow 2.0 Keras:如何为TensorBoard编写图像摘要

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

tensorflow tensorboard 摘要示例

Python Tensorflow - 多次运行 model.fit 而不重新实例化模型

如何评估 TensorFlow 中的新 tf.contrib.summary 摘要?

第三方库Tensorflow编写程序正常运行,出现warning的问题