Keras模型训练报错:Shapes (None,3)与(None,2)不兼容求助
解决形状不兼容报错(Shapes (None, 3) and (None, 2) are incompatible)
问题根源
你的训练标签经过LabelBinarizer处理后是3维的(对应3个分类),但模型最后输出层只设置了2个神经元,两者维度不匹配,导致训练时形状校验失败。
修复步骤
- 先确认实际分类数:在预处理标签前,先打印标签的唯一类别数量,明确任务的分类数:
import numpy as np print("实际分类数量:", len(np.unique(label))) - 修改模型输出层:把最后一个
Dense层的神经元数改成和实际分类数一致的数值(比如实际是3类就改成3):# 替换原代码中Dense(2)的部分 Model.add(Dense(3)) # 这里的数字要和实际分类数匹配 Model.add(Activation("softmax")) - 重新训练:修改后重新编译模型,再执行训练代码即可。
额外提醒
如果你的任务确实是2分类,那得检查label数据是否混入了第三类标签,或者数据预处理时有没有引入错误,确保标签只有两类。LabelBinarizer会根据标签的唯一值自动生成对应维度的one-hot编码,所以输出层神经元数必须和类别数完全对应。
内容的提问来源于stack exchange,提问作者Anh Thái Huỳnh
相关产品推荐
相关产品推荐

