keras - 即使添加回调后最好的模型也没有保存
问题描述
尽管按照建议的步骤通过向 model.fit 添加回调来保存最佳模型,但 h5 文件没有得到保存。像纪元这样的其他东西运行良好。
# fit model
callbacks = [EarlyStopping(monitor='val_loss', patience=10),
ModelCheckpoint(filepath='best_model.h5',
monitor='val_loss', save_best_only=True)]
model.fit(X, y, batch_size=128, epochs=300,callbacks=callbacks,verbose=1)
解决方案
利用
model.fit(X, y, batch_size=128, validation_split=0.1,
epochs=300,callbacks=callbacks,verbose=1)
错误:您ModelCheckpoint
基于val_loss
ie 每次找到更好的(在这种情况下是最小的)验证损失时,它都会保存模型。但是,当您拟合模型时,您不会传递任何数据进行验证。这意味着不计算验证损失,因此不保存模型。
在上面的代码validation_split=0.1
中使用 10%(X, y)
作为验证数据。
另请注意,其他回调EarlyStopping
也基于val_loss
,因此如果没有验证数据,它将不会提前停止。因此,要么手动将验证数据传递给fit
方法,要么使用随机拆分(X, y)
作为验证数据。