Keras:一个加载的检查点模型来恢复训练会降低准确性吗?

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

但是,我的互联网掉线了,并且在加载我的最后一个检查点并从上个季节开始重新训练时(使用initial_epoch),在新训练的第一个季节中,准确性从89.1(加载的模型值)降至83.6。恢复(重新开始)训练时,这是正常行为吗?因为当我的网络出现故障时,它已经在第30季了,准确性也没有下降,也没有明显的改善,因此没有生成任何新的检查点,这迫使我重蹈覆辙。

预先感谢您的帮助。

lin993400 回答:Keras:一个加载的检查点模型来恢复训练会降低准确性吗?

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

场景:

您正在训练30个时期的模型。在第15个阶段,您的准确性为88%(例如,您根据最佳验证准确性保存了模型)。不幸的是,某些事情发生了,您的训练崩溃了。但是,由于您已经过检查点训练,因此您可以在程序崩溃之前的第15个阶段获得结果模型。

如果您从纪元15开始重新训练,以前的validation_accuracies(因为您现在从头开始训练)将不会被“记住”。如果您在epoch 16达到了84%的验证准确度,则您的“ best_model”(具有88%的准确率)将被epoch 16模型覆盖,因为没有没有先前训练/验证的已保存/内部历史数据准确性。在后台,在新的重新训练下,84%的值将与-inf进行比较,因此将保存epoch 16模型。

解决方案是从头开始重新培训,或者使用先前培训的列表(手动或从Callback获取)初始化第二个培训验证准确性。这样,在时代结束时,Keras在引擎盖下进行比较的最大准确性在该情况下将为88%,而不是-inf。

本文链接:https://www.f2er.com/3167196.html

大家都在问