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

Keras模型做数据增强后首Epoch报形状不兼容错误(基于Fashion MNIST)

报错原因及解决方法

核心问题说明

该报错本质是标签与模型输出形状不匹配、验证集数据配对错误共同导致的,具体错误点如下:

  • 验证集参数配对错误:fit_generator 中的 validation_data 错误传入了(x_train, y_val_binary),训练集输入和验证集标签的样本数量完全不一致,形状自然无法匹配,正确的配对应该是(x_val, y_val_binary)
  • 标签编码逻辑错误:LabelBinarizer 分别对训练、测试、验证集执行了fit_transform,不同子集的类别编码规则可能不一致,容易导致标签维度异常,正确做法是仅在训练集执行fit确定编码规则,测试、验证集直接调用transform即可
  • 接口弃用问题:Keras的fit_generator已经是废弃接口,当前版本的fit方法原生支持传入ImageDataGenerator生成的迭代器,不需要调用旧接口

修正代码片段

预处理部分修正

label_as_binary = LabelBinarizer()
# 仅在训练集上拟合编码规则
y_train_binary = label_as_binary.fit_transform(y_train)
# 测试、验证集直接复用训练集的编码规则转换
y_test_binary = label_as_binary.transform(y_test)
y_val_binary = label_as_binary.transform(y_val)

训练部分修正

model2.compile(loss='categorical_crossentropy', 
optimizer=Adadelta(learning_rate=0.01), metrics=['accuracy'])
# 修正验证集配对,替换废弃接口
history = model2.fit(datagen.flow(x_train,y_train_binary, 
  batch_size=batch_size),
epochs = 10, validation_data = (x_val, y_val_binary), verbose = 1)

额外排查项

如果修改后仍然报错,可检查两点:

  • 确认Fashion_MNIST标签为0-9的10分类取值,没有异常标签值
  • 确认代码其他位置没有修改过x_val、y_val_binary的原始形状

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:45:07