Keras:EarlyStopping保存最佳模型

时间:2018-03-21 22:27:53

标签: python machine-learning deep-learning keras

当我使用EarlyStopping回调时,Keras会根据val_loss保存最佳模型,还是保存模型在save_epoch = [最佳纪元的val_loss] + YEARLY_STOPPING_PATIENCE_EPOCHS?

如果是第二个选项,如何保存最佳模型?

以下是代码段:

early_stopping = EarlyStopping(monitor='val_loss', patience=YEARLY_STOPPING_PATIENCE_EPOCHS)

history = model.fit_generator(
    train_generator,
    steps_per_epoch=100, # 1 epoch = BATCH_SIZE * steps_per_epoch samples
    epochs=N_EPOCHS,
    validation_data=test_generator,
    validation_steps=20,
    callbacks=[early_stopping])

#Save train log to .csv
pd.DataFrame(history.history).to_csv('vgg16_binary_crossentropy_train_log.csv', index=False)

model.save('vgg16_binary_crossentropy.h5')

2 个答案:

答案 0 :(得分:1)

根据我使用“早期停留”的经验。回调,模型将不会自动保存...它将停止训练,当您手动保存时,它将是您提出的第二个选项。 要在每次val_loss减少时保存模型,请参阅以下文档页面: https://keras.io/callbacks/并查看"示例:模型检查点"该部分将告诉您到底要做什么。

请注意,如果您希望重新使用已保存的型号,我可以更好地使用' save_weights'在comson中保存json中的体系结构。 YMMV。

答案 1 :(得分:0)

在Keras的v2.2.4 +中,EarlyStopping具有一个restore_best_weights参数,将其设置为True时,会将模型设置为最佳CV性能状态。例如:

EarlyStopping(restore_best_weights=True)