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

运行Keras多分类模型时Shapes(None,2)与(None,3)不兼容如何解决

错误原因
  • 变量接收顺序错误:prepa()函数定义的返回值顺序为trainX,trainy,testX,testy,你接收变量时写为trainX, testX, trainy,testy=prepa(),把训练标签trainy和测试特征testX的位置搞反,导致传入训练接口的标签实际是形状为(None,2)的特征数据,和模型输出的3分类概率分布(None,3)维度不匹配。
  • 损失函数与标签格式不匹配:你当前使用的categorical_crossentropy损失要求传入one-hot编码后的标签,而make_blobs生成的标签是0/1/2的整数格式,即使修正变量顺序,直接传入整数标签也会触发维度不匹配报错。
修复方案
  1. 首先修正变量接收顺序:
# 替换原有的变量接收代码
trainX, trainy, testX, testy = prepa()
  1. 选择以下任意一种方案处理损失与标签的匹配问题:

方案1:适配现有损失,把标签转成one-hot编码

在拿到数据集后添加标签编码代码即可:

trainy = to_categorical(trainy, 3)
testy = to_categorical(testy, 3)

方案2:更换损失函数,无需修改标签格式

直接把编译时的损失函数替换为适配整数标签的sparse_categorical_crossentropy:

model.compile(loss='sparse_categorical_crossentropy', optimizer=opt, metrics=['accuracy'])

内容的提问来源于stack exchange,提问作者kach haja

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:27:02