我的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