在 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 模型时
使用 keras.utils.Sequence 和 keras.model.fit_generator 时出现 KeyError。