在 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 文件中导入数据?
Python Tensorflow - 多次运行 model.fit 而不重新实例化模型