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

TensorFlow/Keras训练报错expected dense_3 shape (1,) 实得(10,)求助

错误根因

代码存在损失函数与标签格式不匹配的问题:

  • 编译模型时使用的sparse_categorical_crossentropy损失,要求输入标签为单值整数类别索引,对应标签shape为(样本数, 1)
  • 调用flow_from_directory时未指定class_mode参数,默认使用class_mode="categorical",会自动生成10类的one-hot编码标签,shape为(样本数, 10),和损失要求的维度不符,触发报错。

修复方案(二选一即可)

  • 方案1(推荐):修改数据生成器参数,输出整数标签匹配现有损失
    修改数据生成器的代码片段:
train_generator = datagen.flow_from_directory(
    TRAINING_DATA_DIR,
    shuffle=True,
    target_size=IMAGE_SHAPE,
    class_mode='sparse' # 新增该参数
)

valid_generator = datagen.flow_from_directory(
    VALID_DATA_DIR,
    shuffle=False,
    target_size=IMAGE_SHAPE,
    class_mode='sparse' # 新增该参数
)
  • 方案2:修改损失函数匹配默认的one-hot标签
    修改模型编译的代码片段:
model.compile(optimizer='adam',
              loss='categorical_crossentropy', # 替换原有sparse_categorical_crossentropy
              metrics=['accuracy'])

修改完成后即可正常启动训练。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:06:03