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

CNN模型训练报错:Shapes (None,1)与(None,15)不兼容

问题排查与解决

错误原因

报错核心是标签形状与模型输出形状不匹配:

  • 模型最后一层是Dense(15, activation='softmax'),输出形状为(None, 15),对应15类的概率分布
  • 你传入的y_train/y_test是形状为(None, 1)的类别索引(比如0-14的整数)
  • 而你使用的categorical_crossentropy损失函数要求标签是one-hot编码格式(每个样本对应15维向量,仅目标类别位置为1,其余为0),因此形状不兼容导致报错

两种解决办法(二选一即可)

办法1:将标签转换为one-hot编码

使用Keras工具函数把一维类别索引转成二维one-hot向量:

from tensorflow.keras.utils import to_categorical

# 转换训练和测试标签
y_train = to_categorical(y_train, num_classes=15)
y_test = to_categorical(y_test, num_classes=15)

# 执行训练(原模型编译代码不变)
cnn_model.fit(x_train, y_train, epochs=10, batch_size=64, validation_data=(x_test, y_test))

办法2:更换损失函数为sparse_categorical_crossentropy

该损失函数专门适配一维类别索引的多分类任务,无需修改标签:

# 编译模型时替换损失函数
cnn_model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# 直接使用原标签训练
cnn_model.fit(x_train, y_train, epochs=10, batch_size=64, validation_data=(x_test, y_test))

内容的提问来源于stack exchange,提问作者Ghulam Mujtaba Adil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:58:20