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

Keras四分类多标签图像识别报错:activation_25形状不匹配如何解决

问题原因

报错核心是模型输出维度和数据集标签维度不匹配:你当前做4类别多标签分类,数据集的每个样本标签是维度为(4,)的数组,但你设置的模型最后一层输出维度为1,二者维度不匹配触发报错。不需要对现有数据做变形处理,调整模型结构与训练配置即可解决。

需修改的三处配置
  • 输出层维度调整:将最后一个全连接层的输出维度从1改为4,匹配4个类别的输出需求,多标签分类保留sigmoid激活函数即可,不需要更换为softmax
  • 损失函数调整:多标签分类场景下每个类别独立做二分类判断,将损失函数从mse更换为binary_crossentropy
  • 评估指标调整:CategoricalAccuracy适用于单标签多分类场景,更换为适配多标签二分类的BinaryAccuracy
修改后的核心代码
model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(150, 150, 3),padding='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
# 此处修改输出维度为4
model.add(Dense(4))
model.add(Activation('sigmoid'))

model.compile(
  optimizer='sgd',
  # 此处修改损失函数
  loss='binary_crossentropy',
  # 此处修改评估指标
  metrics=[keras.metrics.BinaryAccuracy()])

model.fit_generator(
        train_generator,
        steps_per_epoch=2000 // batch_size,
        epochs=50,
        validation_data=validation_generator,
        validation_steps=800 // batch_size)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:48:01