我可以从培训文件夹中删除events.out.tfevents.XXXXXXXXXX.computer_name文件

时间:2018-11-28 10:57:56

标签: ubuntu tensorflow tensorboard

我正在训练fast_rcnn_inception模块,以便对自定义数据集进行对象检测。 在训练目录中,我们找到了名为eval_0的文件夹,并且tensorflow生成了events.out.tfevents.xxxxxx文件。

培训目录结构如下

+training_dir
    +eval_0
     -events.out.tfevents.1542309785.instance-1  1.2GB
     -events.out.tfevents.1542367255.instance-1  5.3GB
     -events.out.tfevents.1542369886.instance-1  3.6GB
     -events.out.tfevents.1542624154.instance-1  31MB
     -events.out.tfevents.1543060258.instance-1  19MB
     -events.out.tfevents.1543066775.instance-2  1.6GB
 -events.out.tfevents.1542308099.instance-1  17MB
 -events.out.tfevents.1542308928.instance-1  17MB
 -events.out.tfevents.1542366369.instance-1  17MB
 -events.out.tfevents.1542369000.instance-1  17MB
 -events.out.tfevents.1542623262.instance-1  17MB
 -events.out.tfevents.1543064936.instance-2  17MB
 -events.out.tfevents.1543065796.instance-2  17MB
 -events.out.tfevents.1543065880.instance-2  17MB
 -model.ckpt-96004.data-00000-of-00001
 -model.ckpt-96004.data-00000-of-00001
 -model.ckpt-96004.index
 -model.ckpt-96004.meta
 -model.ckpt-96108.data-00000-of-00001
 -model.ckpt-96108.index
 -model.ckpt-96108.meta

据我了解,eval_0文件夹中的 tfevents 文件是 评估 的夏季文件,而 training_dir 中的tfevents文件>是 training 的总结性文件。

我几次中断了培训过程,并从最近的检查站继续。 我也知道重新开始训练过程会生成新的tfevents文件。

我的问题如下:

  • 为什么训练 tfevents_files 的大小相同,但是如果 eval_0 / tfevents_files的大小不同吗?

  • 为什么中断培训会在培训中生成新的 tfevents_file 文件夹,但在 eval_0

  • 中找不到该文件夹
  • 是否可以删除 eval_0 中的所有 tfevents 文件(最新文件除外)?可以 对训练或进化历史有影响吗?

2 个答案:

答案 0 :(得分:2)

tfevents 文件对于培训不是必需的,可以安全地删除。

在Tensorflow中, tfevents 由FileWriters创建,通常用于存储摘要输出。以下是一些有关如何使用tf.summaries的常见示例:

  • 在训练开始之前存储张量流图的描述
  • 为每个训练步骤编写损失函数的值
  • 每个时期存储一次层的激活或权重直方图
  • 每次验证都存储一次网络输出图像示例
  • 存储整个验证集的平均精度(或任何其他指标)

此信息对于培训不是必需的,因此可以删除。但是,它对于调试或研究模型的行为可能会派上用场。 TensorBoard是读取和可视化tfevent文件中存储的数据的最常用工具。任何人都可以使用protobuf协议来手动读取和解释TFRecord文件,并且该协议可以在Python,C ++和其他程序中实现。

tfevents以TFRecord格式编写。 TFRecord是一种用于存储二进制记录序列的简单格式。如果文件已经存在,Tensorflow总是将新事件/摘要附加到文件末尾。这说明文件会增长。

由于 tensorflow / models / reserach / object_detection 提供的优化例程的实现细节,训练和评估事件文件的行为不同。即,评估事件文件是直接使用FileWriter创建的,只要存在,它将在log_dir中重用最新的现有事件文件。实施过程中还定期收集大量摘要,这会增加培训期间的事件文件。

另一方面,对于训练例程,当在TPU上进行训练时,开发人员会明确指定一个空的摘要列表。这意味着该事件文件仅创建一次,以后再也不会使用。在非TPU硬件上进行训练或启用 summarize_gradients 选项进行训练时,此行为可能会有所不同。

答案 1 :(得分:0)

TFEvent文件主要由TensorBoard使用。如果您打开一个终端并启动它(例如:tensorboard --logdir .),那么在这些事件文件中将会看到您所看到的内容。

当然,您可以有多个“摘要作者”。您的情况是,训练期间记录的事件记录在根目录“ training_dir”中,而eval阶段的事件则记录在“ eval_0”之下。您需要这样做是因为tensorboard在图表中将每个文件夹绘制为一个单独的组。

您的训练数据与您的评估数据不同,因此事件文件当然也将不同。

至于检查点,您只需要model.ckpt*文件即可恢复权重。事件文件根本不使用,因此您可以安全地删除它们。实际上,如果您实际上打算使用tensorboard,则每次启动新的训练过程时,您可能都希望从一个干净的日志文件夹开始。

事件文件实际上不是检查点的一部分,它们是日志文件。这样,无论何时调用日志记录方法,都将添加新条目。在eval_0文件夹中看不到新条目,可能是因为您在培训阶段(即达到评估阶段之前)停止了该过程。