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

Keras/TensorFlow下CNN蘑菇分类任务model.fit()维度不匹配报错求助

报错原因
  • 核心为卷积池化输出的4维特征图未做展平,直接接入分类全连接层,导致模型输出维度与标签维度不匹配:
    • 数据集每个批次的标签形状为(32,),对应批次大小32,每个样本对应1个分类标签
    • 当前模型最终输出形状为(None, 20, 20, 10),TensorFlow计算损失时会自动将前三个维度拍平为(32*20*20=12800, 10),和标签第一维度32不匹配,触发报错。
解决方案

在ReLU激活层和最终全连接层之间加入Flatten()层,将202032的特征图展平为一维向量,再接入10分类的全连接层即可。也可使用GlobalAveragePooling2D()代替Flatten层,减少参数量,降低过拟合风险。

修改后的模型构建代码如下:

#Constructing layers
input_layer = keras.Input(shape=(64, 64, 3))
x = layers.Conv2D(filters=32, kernel_size=(3, 3), activation="relu")(input_layer)
x = layers.MaxPooling2D(pool_size=(3, 3))(x)
x = keras.layers.ReLU()(x)
# 新增展平层,将4维特征转换为匹配全连接层输入的2维结构
x = layers.Flatten()(x)
output = layers.Dense(10, activation="softmax")(x)

#Making and fitting the model
model = keras.Model(inputs=input_layer, outputs=output)
model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=['accuracy'])
model.fit(train_set, epochs=5, validation_data=validation_set)

修改后模型输出形状变为(None, 10),和标签的批次维度完全匹配,损失计算即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:24:04