即使添加了回调,也无法保存最佳模型

时间:2019-04-21 08:21:08

标签: 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)

1 个答案:

答案 0 :(得分:0)

使用

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

错误::您的ModelCheckpoint基于val_loss,即每次发现更好的验证损失(在这种情况下为最低)都会保存模型。但是,在拟合模型时,您不会传递任何数据进行验证。这意味着没有计算验证损失,因此不保存任何模型。

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

还要注意,另一个回调EarlyStopping也基于val_loss,因此,如果没有验证数据,它将不会尽早停止。因此,要么手动将验证数据传递给fit方法,要么使用(X, y)的随机分割作为验证数据。