键错误:'val_acc'
Posted
技术标签:
【中文标题】键错误:\'val_acc\'【英文标题】:KeyError: 'val_acc'键错误:'val_acc' 【发布时间】:2020-01-28 00:57:18 【问题描述】:以下是 model.fit_generator() 函数的一些参数。这些对象保存在标有回调的列表中。
checkpoint = ModelCheckpoint(
model_file,
monitor= 'val_acc',
save_best_only=True)
early_stopping = EarlyStopping(
monitor='val_loss',
patience=5,
verbose=1,
restore_best_weights=True)
tensorboard = TensorBoard(
log_dir=log_dir,
batch_size=batch_size,
update_freq = 'batch')
reduce_lr = ReduceLROnPlateau(
monitor='val_loss',
patience=5,
cooldown=2,
min_lr=0.0000000001,
verbose=1)
#-----------------------------------------------------------------------------------------------------------------#
callbacks = [checkpoint, reduce_lr, early_stopping, tensorboard]
为对象创建回调对象和参数后,我实现层并编译(未显示,因为它与我遇到的问题无关)。然后我运行 model.fit_generator 函数(它使用上面的回调参数):
history = model.fit_generator(
train_generator,
steps_per_epoch = steps_per_epoch,
epochs=epochs,
verbose=2,
callbacks=callbacks,
validation_data=validation_generator,
validation_steps=validation_steps,
class_weight=class_weight)
我得到的错误是:
KeyError: 'val_acc'
据我了解,这意味着 val_acc 不在列表中。但它是..所以需要帮助来理解我为什么会收到这个错误。
编辑:
报错前的结果图片..[https://i.stack.imgur.com/5lheg.png]
【问题讨论】:
val_accuracy
...
您能粘贴每个时期打印的内容吗?
@SayanipDutta 我包含了在错误停止训练之前得到的结果。
很明显,你需要输入val_accuracy
notval_acc
【参考方案1】:
确保您使用的是model.compile(metrics=['accuracy'])
,而不是Accuracy
或acc
。
同样在文件路径中使用val_accuracy
。
我最近遇到了这个问题。
【讨论】:
【参考方案2】:你需要把monitor= 'val_acc'
改成monitor='val_loss'
checkpoint = ModelCheckpoint(
model_file,
monitor='val_loss',
save_best_only=True)
【讨论】:
以上是关于键错误:'val_acc'的主要内容,如果未能解决你的问题,请参考以下文章
Keras 图像分类 - 验证数据集的预测准确性与 val_acc 不匹配
Keras:训练和验证集上的 model.evaluate() 与上次训练时期后的 acc 和 val_acc 不同
Keras 教程示例 cifar10_cnn.py 在 windows 10 上的 200 个 epoch 中给出 acc: 0.34 val_acc: 0.40?