Keras绘制训练曲线报错KeyError: 'acc' 求助
解决Keras训练曲线可视化时的KeyError: 'acc'问题
这个问题其实很好解决,根源在于Keras的命名规范变化:
- 你在模型编译时指定了
metrics=["accuracy"],这是Keras 2.x及以后版本的标准写法,此时训练历史(H.history)里的准确率键名是**'accuracy'**,而不是旧版本的'acc'。 - 你沿用了原二分类代码里的
plt.plot(H.history['acc']),自然会触发KeyError: 'acc'。
具体解决方案
我给你两种处理方式,选一种就行:
方式1:直接修改键名(最直接)
把可视化代码里的所有'acc'替换成'accuracy',包括验证集的'val_acc'也要改成'val_accuracy',比如:
# 原来的错误代码 plt.plot(H.history['acc']) plt.plot(H.history['val_acc']) # 修改后的正确代码 plt.plot(H.history['accuracy']) plt.plot(H.history['val_accuracy'])
方式2:兼容新旧写法(适合需要保留旧代码结构的情况)
如果不想改动太多可视化代码,可以在训练结束后统一处理历史字典,把新键名映射到旧键名:
# 训练完成后添加这段代码 if 'accuracy' in H.history: # 把accuracy映射为acc,val_accuracy映射为val_acc H.history['acc'] = H.history['accuracy'] H.history['val_acc'] = H.history['val_accuracy']
这样原来的H.history['acc']就能正常调用了。
额外提醒
多分类任务下,metrics=["accuracy"]是完全有效的,Keras会自动根据你的损失函数(比如categorical_crossentropy或sparse_categorical_crossentropy)适配多分类的准确率计算,不需要额外调整。
内容的提问来源于stack exchange,提问作者DouL
相关产品推荐
相关产品推荐

