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

Keras中categorical_accuracy指标的输出含义咨询

理清Keras训练返回值与metrics的对应关系

嘿,其实你已经抓到了最关键的线索——model.metrics_names!这个属性直接帮你精准对应train_on_batch(包括fit这类训练方法)返回的每个数值到底代表什么:

  • 返回的第一个数值永远是你编译时指定的损失函数结果(也就是你例子里的categorical_crossentropy),对应metrics_names列表的第一个元素loss
  • 返回的第二个数值就是你指定的评估指标的计算结果,对应metrics_names列表的第二个元素

拿你的场景举例:

  1. 当你用model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])编译时,model.metrics_names会输出['loss', 'accuracy'],所以tr_loss, tr_acc = model.train_on_batch(X, Y)里的tr_acc就是通用准确率的计算值
  2. 当你换成metrics=['categorical_accuracy']时,model.metrics_names变成['loss', 'categorical_accuracy'],这时候返回的第二个数值就是分类专属准确率的结果

顺便补充个小知识点帮你区分这两个准确率:

  • accuracy是个“智能”的通用指标,Keras会自动根据你的标签格式适配计算逻辑——如果标签是独热编码(比如多分类里每个样本对应一个只有正确类别为1的向量),它和categorical_accuracy结果完全一致;如果标签是整数形式(比如直接用0、1、2代表类别),它会自动切换成sparse_categorical_accuracy的计算方式
  • categorical_accuracy则是专门为独热编码标签设计的,只有当标签是这种格式时,它的计算才是准确的

总结一下:以后不确定返回值含义时,直接打印model.metrics_names,列表里的元素顺序和训练方法返回的数值顺序完全对应,再也不用瞎猜啦~

内容的提问来源于stack exchange,提问作者Boppity Bop

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:55:43