Keras 回调 ModelCheckpoint 不保存权重

Jus*_*ser 3 python deep-learning conv-neural-network keras

这里建议的解决方案并没有解决我的问题这个问题

我正在尝试使用回调ModelCheckpoint和 EarlyStopping 来在提前停止时保存最佳权重。在第一个纪元之后,我收到一个运行时警告,但代码运行剩余的纪元没有错误,但仍然没有包含权重的文件出现。第一个纪元后的警告如下:

运行时警告:只能在 val_acc 可用的情况下保存最佳模型,跳过。“跳过。” % (self.monitor), RuntimeWarning) RuntimeWarning:提前停止以val_acc不可用的指标为条件。可用指标有:val_loss,val_accuracy,loss,accuracy (self.monitor, ','.join(list(logs.keys()))), RuntimeWarning

我在fit()函数中添加了验证数据,所以我不确定为什么。

filepath = "weights_best.hdf5"

model.compile(loss="mean_squared_error",
                  metrics=['accuracy'],
                  optimizer=optimizer)
batchSize = 64 
numEpochs = 75
validation_data = (data.x_valid, data.y_valid)

callbackCheckpoint = keras.callbacks.callbacks.ModelCheckpoint(filepath,
                                                                   monitor='val_acc',
                                                                   save_best_only=True,
                                                                   save_weights_only= True,
                                                                   mode='max')

callbackEarlyStop = keras.callbacks.callbacks.EarlyStopping(monitor='val_acc',
                                                                min_delta=0,
                                                                patience=7,
                                                                verbose=0,
                                                                mode='auto')
callbacks = [callbackCheckpoint, callbackEarlyStop]
model.fit(data.x_train, data.y_train, batchSize, numEpochs, callbacks=callbacks,
              validation_data=validation_data)
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

Nat*_*oen 6

更改monitor='val_acc'monitor='val_accuracy'metrics=['accuracy']metrics=['acc']