如果损失值波动,最终训练步骤可能不会拥有最低的损失值。
我想知道,如果在Keras中训练模型时提供了验证数据,Keras是如何选择最终模型的?
是
- Keras通过选择整个训练过程中在验证数据上损失最低的模型来决定吗?
还是
- Keras选择来自最终训练步骤的最终模型,不管这个最终模型是否在验证数据上给出最小损失?
谢谢你。
回答:
是的,默认情况下Keras返回来自最终训练步骤的最终模型,不管这个最终模型是否在验证数据上给出最小损失。
如果你想使用在验证数据上损失最低的模型,你需要使用带有参数save_best_only
的ModelCheckpoint回调。训练完成后,你需要加载保存的模型。这将是验证数据损失最佳的模型。
save_best_model = ModelCheckpoint(best_model_path, monitor='val_loss', save_best_only=True, save_weights_only=True)# fit modelmodel.fit(X_train, y_train, batch_size=64, epochs=35, validation_data=(X_val, y_val), callbacks=[save_best_model])# select the best modelmodel.load_weights(best_model_path)