【发布时间】:2019-03-14 09:25:48
【问题描述】:
我正在 Keras 中训练一个神经网络,但是当新数据出现并且我尝试重新训练它时,它在 epochs 中的损失与我第一次训练我的模型时一样高。
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,这让我觉得我的模型没有按应有的方式加载。任何人都知道为什么会发生这种情况?
【问题讨论】:
-
我假设从模型检查点加载时函数
load_model()不正确。它只存储模型的权重。尝试使用load_weights()加载权重。 Example -
据我所知,如果你不输入
save_weights_only = True,整个模型都会被保存,至少 Keras 文档是这么说的。
标签: python tensorflow keras