首页 > 解决方案 > 即使添加回调后最好的模型也没有保存

问题描述

尽管按照建议的步骤通过向 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)

标签: keras

解决方案


利用

model.fit(X, y, batch_size=128, validation_split=0.1, 
                 epochs=300,callbacks=callbacks,verbose=1)

错误:ModelCheckpoint基于val_lossie 每次找到更好的(在这种情况下是最小的)验证损失时,它都会保存模型。但是,当您拟合模型时,您不会传递任何数据进行验证。这意味着不计算验证损失,因此不保存模型。

在上面的代码validation_split=0.1中使用 10%(X, y)作为验证数据。

另请注意,其他回调EarlyStopping也基于val_loss,因此如果没有验证数据,它将不会提前停止。因此,要么手动将验证数据传递给fit方法,要么使用随机拆分(X, y)作为验证数据。


推荐阅读