为每个步骤保存 TensorFlow 检查点

Posted

技术标签:

【中文标题】为每个步骤保存 TensorFlow 检查点【英文标题】:Tensorflow Checkpoints saving for each step 【发布时间】:2021-10-24 11:50:41 【问题描述】:

我正在使用 Tensorflow 对象检测来训练一个两类模型。训练时,训练从 0 开始,分 100 步进行(每 100 步查看日志),当步长达到 1000(100、200、300、400、500 ......步)时,它会执行评估,我可以在 tensorboard 中查看结果。在 1000 步之后,检​​查点会为每一步(如 1001、1002、1003 ......)保存,并且每一步也会进行评估。 为什么会这样?

Tensorflow 版本:nvidia-tensorflow 1.15

培训基于:https://colab.research.google.com/github/google-coral/tutorials/blob/master/retrain_ssdlite_mobiledet_qat_tf1.ipynb

【问题讨论】:

【参考方案1】:

我不确定在 1000 之后的每一步是否保存权重。

如果你使用的是基于 slim 的 trainer.py。 如果您想更改 .ckpt 模型保留的数量,您必须将第 370 行更改为:

saver = tf.train.Saver(
keep_checkpoint_every_n_hours=keep_checkpoint_every_n_hours, max_to_keep=10)

在这种情况下,您将保留最后 10 个 .ckpt

如果您想更改 .ckpt 的频率,您必须在 slim.learning.train 中添加 (第 397 行)

save_interval_secs=X

其中 X 是以秒为单位的频率

【讨论】:

【参考方案2】:

我找到了解决方法,但没有深入了解。

在“python3.6/site-packages/tensorflow_estimator/python/estimator/run_config.py”下的python文件“run_config.py”中,有一个名为“save_checkpoints_steps”的变量被赋值为“_USE_DEFAULT” ,将其更改为1000后,没有问题,并且仅每1000个检查点保存检查点。

我仍然不知道为什么“_USE_DEFAULT”会为每一步保存检查点

【讨论】:

以上是关于为每个步骤保存 TensorFlow 检查点的主要内容,如果未能解决你的问题,请参考以下文章

如何保存使用Tensorflow 1.xx中的.meta检查点模型作为部分的Tensorflow 2.0模型?

Tensorflow 在每个 epoch 结束时卡住了几秒钟

TensorFlow,缺少检查点文件。 saver 是不是只允许保留 5 个检查点?

tensorflow Tensorboard可视化-老鱼学tensorflow

风格迁移:在 tensorflow 1.15.0 中保存和恢复检查点/模型

在 Google Colab 中保存 TensorFlow 检查点