当我使用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')
答案 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)