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

Keras模型单样本过拟合:fit与predict损失差异异常分析

单目深度估计过拟合异常的原因分析
  • 数据预处理/后处理不一致
    训练与预测阶段的输入数据处理流程可能存在差异:比如训练时对输入图像做了归一化、裁剪、翻转等增强操作,但预测时漏做部分步骤,或处理参数(如均值、标准差)不匹配;深度标签在训练时做了缩放(如除以最大深度值),但预测后未反缩放回原始范围,导致损失计算数值完全偏离预期。

  • 损失函数计算逻辑不匹配
    model.fit训练时的损失函数与预测后手动计算损失的逻辑不一致:比如训练时损失是对批量数据的平均计算,预测时单样本计算未做对应适配;或损失函数内部包含训练阶段专属逻辑(如部分正则项仅在训练时生效),手动计算时未考虑这些细节;另外,Keras部分损失函数会自动处理标签格式(如维度匹配、转置),手动计算时可能忽略此类隐式处理。

  • 模型状态异常
    若训练后保存再加载模型,可能存在保存不完整的情况:比如仅保存权重未保存模型结构,或加载时模型的输入输出维度、层参数与训练时不符;另外,即使移除了BatchNorm,若模型包含Dropout层,需确认预测时是否正确切换到推理模式(Keras的model.predict会自动切换,但手动设置模型状态时可能出错)。

  • 批量维度不匹配
    Keras模型默认处理批量数据,训练时输入为(1, H, W, C)的批量格式,若预测时输入变为(H, W, C)的单样本格式,会导致卷积层等内部结构的维度计算出错,输出结果异常。需确保预测时输入与训练时维度一致,比如通过np.expand_dims(sample, axis=0)为单样本增加批量维度。

  • 数值精度偏差
    若训练时开启混合精度训练(如mixed_precision.set_global_policy('mixed_float16')),但预测时未同步开启对应设置,会导致模型输出数值精度丢失,损失计算出现偏差;或训练时损失采用低精度累加,显示的loss值与实际单样本损失的计算精度不一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:35:01