Skip to main content
 首页 » 编程设计

python之如何在 tensorflow 中保存迭代模型和最佳模型

2024年08月16日30unruledboy

我正在尝试保存我的模型的迭代检查点,以及在独立验证数据集上取得最佳分数的模型。然而,我的检查点覆盖了我最好的模型。实际上,我正在使用类似的东西:

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 文件就不会发生冲突。