在 keras 中绘制曲线给出 KeyError: 'accuracy'

Posted

技术标签:

【中文标题】在 keras 中绘制曲线给出 KeyError: \'accuracy\'【英文标题】:Plotting curve in keras giving KeyError: 'accuracy'在 keras 中绘制曲线给出 KeyError: 'accuracy' 【发布时间】:2020-08-30 00:51:21 【问题描述】:

我一直在尝试在 Python 脚本中使用 keras 绘制我的损失和准确性训练曲线,但我遇到了一个关键错误:

Traceback (most recent call last):     
  File "train_mask_detector.py", line 149, in <module>      
  plt.plot(np.arange(0, N), H.history["accuracy"], label="accuracy")     
KeyError: 'accuracy'

训练模型代码

opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS)
model.compile(loss="binary_crossentropy", optimizer=opt,
    metrics=["accuracy"])

# train the head of the network
H = model.fit(
    aug.flow(trainX, trainY, batch_size=BS),
    steps_per_epoch=len(trainX) // BS,
    validation_data=(testX, testY),
    validation_steps=len(testX) // BS,
    epochs=EPOCHS)


# plot the training loss and accuracy
N = EPOCHS
plt.style.use("ggplot")
plt.figure()
plt.plot(np.arange(0, N), H.history["loss"], label="loss")
plt.plot(np.arange(0, N), H.history["val_loss"], label="val_loss")
plt.plot(np.arange(0, N), H.history["accuracy"], label="accuracy")
plt.plot(np.arange(0, N), H.history["val_accuracy"], label="val_accuracy")

EDIT(回答后):字典键是

print(H.history.keys()) 
dict_keys(['loss', 'acc', 'val_loss', 'val_acc'])

我将绘图命令更改为

plt.plot(np.arange(0, N), H.history["acc"], label="accuracy")

但错误仍然存​​在

KeyError: 'accuracy' 

【问题讨论】:

【参考方案1】:

您应该检查字典 H.history 的键 - 取决于 Keras versions,有时准确度返回为 acc,有时返回为 accuracy

H.history.keys()

从你的错误来看,这里大概是acc;所以把它改成

plt.plot(H.history["acc"], label="accuracy")

应该可以工作(你的情节并不需要np.arange 部分)。

如有必要,类似地修改您的 plot 命令以确保验证准确性。

【讨论】:

以上是关于在 keras 中绘制曲线给出 KeyError: 'accuracy'的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Keras 中绘制 MLP 模型的训练损失和准确度曲线?

尝试在 Keras 中加载顺序模型时出现“KeyError:0”

拟合时 Keras GRU NN KeyError:“不在索引中”

Pandas - KeyError: '[] not in index' 训练 Keras 模型时

JavaScript图形实例:再谈曲线方程

使用 keras.utils.Sequence 和 keras.model.fit_generator 时出现 KeyError。