[英]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
文件不會沖突。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.