此处建议的解决方案无法解决我的问题this question。
我正在尝试使用回调ModelCheckpoint
和EarlyStopping来在尽早停止时保存最佳权重。在第一个时期之后,我收到运行时警告,但是代码将运行其余的时期,而不会出错,但是仍然没有出现包含权重的文件。第一个时期之后的警告如下:
RuntimeWarning:仅当val_acc可用时,才能保存最佳模型, 跳过。 “跳过。” %(self.monitor),RuntimeWarning) RuntimeWarning:以指标
val_acc
为条件的提前停止 不可用。可用的指标有: val_loss,val_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)
任何帮助将不胜感激!
答案 0 :(得分:0)
将monitor='val_acc'
更改为monitor='val_accuracy'
或将metrics=['accuracy']
更改为metrics=['acc']
答案 1 :(得分:0)
是的,监视'val_accuracy',仅是注释,基于最高的val_accuracy监视和保存权重可能不会给您“最佳”的答案。监视“ val_loss”通常是一个更好的答案。 val_loss和val_accuracy以完全不同的方式计算。看到val_loss增加,但也有val_accuracy增加,反之亦然。最后,您要使用验证损失最小的模型。如果这样做,请确保在检查点回调中更改mode ='min'或mode ='auto。