如何在张量流中保存迭代模型和最佳模型?
How to save iterative models and best model in tensorflow?
我试图保存我的模型的迭代检查点,以及在独立验证数据集上获得最佳分数的模型。然而,我的检查点覆盖了我最好的模型。实际上,我使用的是:
saver = tf.train.Saver()
with tf.Session() as sess:
for epoch in range(20):
# Train model [...]
# and save a checkpoint
saver.save(sess, "iter", global_step=epoch)
if best_validiation_acc < last_validation_acc:
saver.save(sess, "best_model")
如何让我最好的模型不被我的迭代保存覆盖?
原因是您对两者使用相同的 tf.train.Saver
,因此它会记住最后的 max_to_keep=5
个检查点文件,无论您如何命名它们。
最简单的解决方案是设置max_to_keep=None
,这将强制保存程序保留所有 个检查点并且不覆盖任何内容 .但是,您可能更愿意至少覆盖迭代检查点。本例的解决方案是:
iter_saver = tf.train.Saver(max_to_keep=3) # keep 3 last iterations
best_saver = tf.train.Saver(max_to_keep=5) # keep 5 last best models
with tf.Session() as sess:
for epoch in range(20):
# Train model [...]
# and save a checkpoint
iter_saver.save(sess, "iter/model", global_step=epoch)
if best_validiation_acc < last_validation_acc:
best_saver.save(sess, "best/model")
我也会使用不同的目录,这样 checkpoint
文件就不会冲突。
我试图保存我的模型的迭代检查点,以及在独立验证数据集上获得最佳分数的模型。然而,我的检查点覆盖了我最好的模型。实际上,我使用的是:
saver = tf.train.Saver()
with tf.Session() as sess:
for epoch in range(20):
# Train model [...]
# and save a checkpoint
saver.save(sess, "iter", global_step=epoch)
if best_validiation_acc < last_validation_acc:
saver.save(sess, "best_model")
如何让我最好的模型不被我的迭代保存覆盖?
原因是您对两者使用相同的 tf.train.Saver
,因此它会记住最后的 max_to_keep=5
个检查点文件,无论您如何命名它们。
最简单的解决方案是设置max_to_keep=None
,这将强制保存程序保留所有 个检查点并且不覆盖任何内容 .但是,您可能更愿意至少覆盖迭代检查点。本例的解决方案是:
iter_saver = tf.train.Saver(max_to_keep=3) # keep 3 last iterations
best_saver = tf.train.Saver(max_to_keep=5) # keep 5 last best models
with tf.Session() as sess:
for epoch in range(20):
# Train model [...]
# and save a checkpoint
iter_saver.save(sess, "iter/model", global_step=epoch)
if best_validiation_acc < last_validation_acc:
best_saver.save(sess, "best/model")
我也会使用不同的目录,这样 checkpoint
文件就不会冲突。