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

CNN架构实现报错:输出形状不兼容问题排查

CNN输出形状不匹配问题排查

问题背景

数据集形状如下:

x_train.shape, y_train.shape, x_test.shape, y_test.shape

输出结果:

((1203, 162, 1), (1203, 7), (402, 162, 1), (402, 7))

模型架构代码:

input_x = tf.keras.layers.Input(shape = (x_train.shape[1],1))
conv_1 = tf.keras.layers.Conv1D(filters=16,kernel_size=3,padding="same",activation="relu")(input_x)
pool_1 = tf.keras.layers.MaxPooling1D(2)(conv_1)
conv_2 = tf.keras.layers.Conv1D(filters=32,kernel_size=3,padding="same",activation="relu")(pool_1)
pool_2  = tf.keras.layers.MaxPooling1D(2)(conv_2)

flatten = tf.keras.layers.Flatten()(pool_2)
dense = tf.keras.layers.Dense(512, activation="relu")(flatten)
fb = tf.keras.layers.Dropout(0.4)(dense)
fb = tf.keras.layers.Dense(512, activation="relu")(fb)
fb = tf.keras.layers.Dropout(0.4)(fb)

output = tf.keras.layers.Dense(8, activation="softmax")(fb)
model_branching_summed = tf.keras.models.Model(inputs=input_x, outputs=output)
model_branching_summed.summary()
model_branching_summed.compile(optimizer=SGD(learning_rate=0.01 , momentum=0.8), loss='categorical_crossentropy', metrics= ['accuracy'])


history=model_branching_summed.fit(x_train, y_train, batch_size=128, epochs=100, validation_data=(x_test, y_test), callbacks=[rlrp])

运行时出现错误:

ValueError                                Traceback (most recent call last)
Cell In[192], line 5
      1 rlrp = ReduceLROnPlateau(monitor='loss', factor=0.4, verbose=0, patience=2,min_lr=0.0001)
      2 #(min_lr=0.000001)
----> 5 history=model_branching_summed.fit(x_train, y_train, batch_size=128, epochs=100, validation_data=(x_test, y_test), callbacks=[rlrp])

ValueError: Shapes (None, 7) and (None, 8) are incompatible

错误原因

错误核心是输出层维度与标签维度不匹配:

  • 标签y_train和y_test的形状为(样本数,7),说明这是一个7分类任务
  • 但模型最后一层Dense(8, activation="softmax")设置了8个输出神经元,导致输出形状为(None,8),和标签的(None,7)无法对应,触发形状不兼容的错误

解决方案

将输出层的神经元数量修改为7,与分类类别数一致:

# 原代码
# output = tf.keras.layers.Dense(8, activation="softmax")(fb)
# 修改后
output = tf.keras.layers.Dense(7, activation="softmax")(fb)

重新编译并训练模型,即可解决该形状不匹配问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:25:24