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

Keras训练时输入形状不匹配无报错,评估时报错原因咨询

问题解析:Keras训练与评估阶段输入形状校验差异

训练阶段无报错的核心原因

Keras在训练流程中(尤其是用Model.fit()搭配tf.data.Dataset作为输入时),存在动态形状推导机制:如果模型还未被显式构建(build()未被调用),它会自动根据第一个输入batch的实际形状,覆盖你在Input层中指定的不匹配形状,完成模型构建。

你的场景里,虽然Input层写了(365, 480, 3),但训练数据的形状是(480, 365, 3),且模型后续的卷积、池化等层都支持动态空间尺寸(只要通道数匹配),Keras会直接忽略你手动指定的Input形状,用实际数据的形状完成模型构建,所以训练全程不会报错。

评估阶段报错的触发逻辑

评估时出现形状不匹配错误,通常是因为模型的输入形状已被固定:

  • 如果你是训练后直接调用model.evaluate(),理论上不会报错(除非评估数据集的image_size和训练集不一致);
  • 更常见的情况是你保存了训练后的模型,重新加载后再评估:Keras保存模型时,会优先记录你在Input层显式声明的shape=(365, 480, 3),而非训练时动态调整后的形状。加载模型后,输入层的形状被固定为初始指定值,此时评估数据的(480, 365, 3)就与模型要求的形状冲突,触发ValueError。

快速修复方案

  • 对齐形状配置:把Input层的shape改成(480, 365, 3),和image_dataset_from_directory的image_size保持完全一致;
  • 启用动态输入:如果需要模型支持任意尺寸输入,可将Input层的shape设为(None, None, 3)(前提是后续所有层都兼容动态空间尺寸);
  • 规范模型保存/加载:训练完成后用model.save()保存完整模型,加载时确保评估数据集的形状与训练集严格一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 18:05:37