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

Keras执行to_categorical索引越界及CNN结构正确性咨询

报错原因

Keras的to_categorical函数生成独热编码时,要求分类标签从0开始索引。你设置的分类数为6,生成的独热编码数组第二个维度长度为6,合法下标范围是*05*。但你的标签取值为16,标签值6对应下标6超出了数组边界,因此触发越界报错。
修复方案:在调用to_categorical前将所有标签值减1,把标签取值范围调整为0~5即可:

# 放在train_test_split之后、转独热编码之前执行
y_train = y_train - 1
y_test = y_test - 1
CNN网络其余部分的问题

你搭建的网络还有两处明显错误需要修正:

  • 输入形状不匹配
    你打印的训练数据形状为(850, 100, 1200),但首个卷积层设定的input_shape为(30, 1200, 1),维度完全不匹配。同时CNN输入要求带通道维度,你需要先给数据补充单通道维度,再调整输入形状配置:
# 给训练、测试数据补充单通道维度(对应灰度图)
X_train = X_train.reshape(-1, 100, 1200, 1)
X_test = X_test.reshape(-1, 100, 1200, 1)

# 调整首个卷积层的input_shape参数
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(100, 1200, 1)))
  • 输出层缺少softmax激活
    你使用categorical_crossentropy作为多分类损失,要求输出层输出各类别的概率值,必须给最后一个全连接层添加softmax激活函数:
model.add(layers.Dense(num_classes, activation='softmax'))

以上两处修正完成后,网络即可正常训练。

内容的提问来源于stack exchange,提问作者Adler Müller

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:15:03