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

Pytorch CNN分类器训练准确率上升但验证准确率停留在随机概率问题咨询

问题原因分析
  • 验证集可靠性不足:每类仅10张验证样本,总验证集规模仅60张,统计置信度极低,指标波动极大,出现等同于随机概率的结果属于小样本下的正常波动;此外如果验证集与训练集的分布(如光照、拍摄角度、样本类型)存在显著偏移,也会导致模型学到的训练集特征无法在验证集生效,表现为随机猜测水平。
  • 代码逻辑错误:最常见的问题是验证阶段未调用model.eval(),导致BatchNorm、Dropout层仍处于训练模式,推理结果完全偏离实际效果;其次是输出层额外添加Softmax与CrossEntropyLoss不匹配,PyTorch的CrossEntropyLoss内置了Softmax计算,额外添加会导致输出分布被过度平滑、梯度消失,模型仅能拟合训练集噪声,无泛化能力。
  • 超参数设置不合理:当前学习率仅为1e-6,属于极低水平,模型收敛速度极慢,容易卡在局部最优点,仅能拟合训练集的独有特征,无法学习通用分类特征;此外叠加L1、L2正则与三层Dropout的正则化强度过高,会进一步压制模型的泛化能力。
优化解决办法
  • 修正代码错误
    • 验证阶段先执行model.eval(),关闭BatchNorm的滑动平均更新和Dropout的随机失活,推理完成后调用model.train()切回训练模式
    • 移除输出层前的Softmax算子,直接将全连接层输出传入CrossEntropyLoss
  • 优化数据集划分
    • 重新划分训练验证集,将验证集占比调整到总数据的10%~20%,保证每类验证样本至少50张,确保验证指标的统计意义;同时排查验证集的标注质量、数据分布,确保与训练集无显著分布差异,无批量标注错误
  • 调整超参数配置
    • 将学习率上调到1e-4 ~ 1e-5区间,配合学习率衰减策略(如ReduceLROnPlateau)动态调整,加快收敛速度避免卡在局部最优
    • 降低正则化强度:Dropout失活概率下调到0.1~0.2,L2正则的weight_decay参数设置为1e-4 ~ 1e-5,暂时移除L1正则,避免正则过度限制模型拟合能力
  • 优化训练策略
    • 可以引入同领域预训练的CNN权重做迁移学习,在小样本场景下能大幅提升模型泛化能力
    • 训练过程中每轮验证后保存验证损失最低的权重作为最优模型,避免过拟合

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 20:06:03