You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:38:55