【问题标题】:Keras: A loaded checkpoint model to resume a training could decrease the accuracy?Keras:恢复训练的加载检查点模型会降低准确性吗?
【发布时间】:2020-02-29 16:57:29
【问题描述】:

我的 keras 模板正在为我训练的每个最佳时间生成一个检查点。

但是我的网络中断了,当加载我的最后一个检查点并从上一季重新开始训练(使用 initial_epoch)时,准确率从 89.1(加载的模型值)下降到新训练的第一季的 83.6。这是恢复(重新开始)训练时的正常行为吗?因为当我的网络掉线的时候已经是第30个赛季了,准确率没有下降,也没有明显的提升,所以也没有产生新的checkpoint,逼得我回了几个epoch。

提前感谢您的帮助。

【问题讨论】:

    标签: keras floating-accuracy checkpoint resuming-training


    【解决方案1】:

    保存和重新训练的问题在于,当您从训练模型开始重新训练到纪元 N 时,在纪元 N+1 它没有保留历史记录。

    场景:

    您正在训练一个模型 30 个 epoch。在 epoch 15,您的准确度为 88%(假设您根据最佳验证准确度保存模型)。不幸的是,发生了一些事情,你的训练崩溃了。但是,由于您使用检查点进行了训练,因此您在第 15 轮获得了结果模型,在您的程序崩溃之前。

    如果您从 epoch 15 开始重新训练,之前的 validation_accuracies(因为您现在“从头开始”再次训练)将不会“在任何地方被记住”。如果您在 epoch 16 获得 84% 的验证准确度,您的 'best_model'(带有 88% acc)将被 epoch 16 模型覆盖,因为 没有先前的保存/内部历史数据训练/验证准确度。在后台,在新的再训练中,84% 将与 -inf 进行比较,因此它将保存 epoch 16 模型。

    解决方案是从头开始重新训练,或者使用上一次训练的列表(手动或从 Callback 获得)初始化第二次训练验证精度。这样,在您的时代结束时,Keras 在后台比较的最大准确度将是88%(在场景中)而不是-inf

    【讨论】:

    • 谢谢,廷布斯。我现在明白了。 :) 关闭主题。
    猜你喜欢
    • 1970-01-01
    • 2017-10-09
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 2020-02-11
    • 2018-12-06
    • 2017-03-16
    相关资源
    最近更新 更多