我正在Keras中训练神经网络,但是当有新数据出现时,我尝试对其进行重新训练,那么,这个时期的损失就和我第一次训练模型的损失一样高。
checkpoint = ModelCheckpoint('my_model.h5', monitor='loss', verbose=1, save_best_only=True, mode='min')
callbacks_list = [checkpoint]
model.fit(X_train,y_train, batch_size = batch_size, epochs = epochs, callback = callbacks_list)
new_model = load_model('my_model.h5')
如此处的建议Keras: How to save model and continue training?,我试图在model
和new_model
中预测相同的数据,并使用以下方法测量差异:
assert_allclose(model.predict(x_train),
new_model.predict(x_train),
1e-5)
实际上,我遇到了断言错误,甚至使用tol = 1e-2
也遇到了错误,因此使我认为我的模型没有按预期加载。任何人都知道为什么会这样吗?
答案 0 :(得分:0)
ModelCheckpoint
可以节省训练中损失较少的模型重量。
您的model
保存了最后一个时期的重量。
如果模型的最后一个时期不是损失较小的时期,则保存的模型(new_model
)的权重与原始模型的权重不匹配,并且预测也不相同。< / p>