Keras:加载检查点模型以恢复训练可能会降低准确性



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

然而,我的互联网下降了,当加载我的最后一个检查点并从上个赛季开始重新开始训练时(使用initial_epoch(,在新训练的第一个赛季,准确率从89.1(加载的模型值(下降到83.6。恢复(重新开始(训练时,这种行为正常吗?因为当我的网络崩溃时,已经是第30季了,准确率没有下降,也没有显著的改进,因此没有产生任何新的检查点,这迫使我回到了几个时代。

提前感谢您的帮助。

保存和重新训练的问题是,当您从经过训练的模型开始重新训练到epochN时,在epochN+1时,它不会保留历史记录。

场景:

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

如果您从epoch15开始重新训练,那么之前的验证_准确性(因为您现在再次"从头开始"训练(将不会"在任何地方被记住"。如果您在epoch16获得84%的验证准确率,则您的"最佳模型"(带有88%acc(将被epoch 16模型覆盖,因为没有先前训练/验证准确率的保存/内部历史数据。在引擎盖下,在新的重新训练中,84%将与-inf进行比较,因此它将保存历元16模型。

解决方案是从头开始重新训练,或者用以前训练的列表(手动或从回调中获得(初始化第二次训练验证的准确性。这样,Keras在纪元结束时比较的最大精度将是88%(在该场景中(,而不是-inf

最新更新