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

如何修复TensorFlow训练数据做数据增强时的形状不匹配报错?

报错核心原因

这个错误是卷积层输出的特征图维度和后续Flatten层、全连接层要求的维度不匹配导致的,和你调整数据增强时修改了输入图像尺寸直接相关:

  • 错误日志中Input to reshape is a tensor with 663552 values, but the requested shape requires a multiple of 30976说明:卷积层输出的所有特征图加起来总共有663552个参数,但Flatten层之后的全连接层要求输入参数数量必须是30976的倍数,二者无法对齐,因此reshape操作失败。
  • 你提到未启用数据增强时模型可以正常运行,说明你之前训练用的图像尺寸和现在flow_from_directory中设置的target_size=(150, 150)不一致,输入尺寸变化会导致经过卷积、池化后的特征图尺寸同步变化,拉平后的维度自然和你之前定义好的全连接层输入维度匹配不上。

另外你的代码还有两个明显的配置错误也可能触发维度异常:

  1. 训练和验证生成器都使用了同一个directory_testData路径,训练验证数据混同的同时,如果测试集图像尺寸和训练集原本的尺寸不一致,也会导致维度报错。
  2. steps_per_epoch、validation_steps设置的数值如果远大于你的数据集实际能提供的批次数量,生成器循环输出时也可能出现维度异常。
解决方案

按以下优先级排查修正即可:

  • 首先对齐输入尺寸,二选一即可:
    1. 调整flow_from_directory中的target_size参数,和你未启用数据增强时的训练图像尺寸保持一致,保证卷积层输出的特征图维度和之前正常运行时的维度相同。
    2. 如果你确认要使用150*150作为输入尺寸,需要重新计算经过所有卷积、池化层后的特征图尺寸,调整Flatten层之后的全连接层的输入维度适配新的特征图大小。
      可以先运行以下调试代码确认维度差异:
    # 查看当前数据生成器输出的单批次图像形状
    for x, y in train_generator:
        print("当前生成器输出图像形状:", x.shape)
        break
    # 查看模型各层输出形状,确认卷积层输出维度
    model.summary()
    
  • 修正数据集目录配置:训练生成器使用训练集路径,验证生成器使用独立的验证集路径,不要混用测试集路径做训练。
  • 调整步数参数:按照实际样本数 // batch_size的规则设置steps_per_epoch和validation_steps,不要设置远大于实际数据集容量的数值。比如训练集有6400张图,batch_size=32的话,steps_per_epoch就设为200即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:15:02