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

PyTorch ConvNet训练损失无变化且仅预测单个类别问题排查求助

问题排查与解决方案

首要修复:核心模型结构错误

你当前的网络输出层后额外添加了ReLU激活,这是导致故障的核心原因:

  • 交叉熵损失(CEL)默认接收线性层输出的原始logits作为输入,输出层后加ReLU会将所有负输出强制置为0,完全破坏分类概率分布的表达能力,同时极易导致梯度断流,模型无法学习有效参数
  • 直接删除linear_relu_stack的第5层ReLU即可,修改后的输出段仅保留最后一层Linear(in_features=512, out_features=2, bias=True)
    你观察到的训练损失稳定卡在0.693147刚好是ln(2)的数值,对应两类输出概率均为0.5时的交叉熵结果,完全符合上述故障导致模型无法学习的特征。

其余需调整的配置项

  • 输入数据归一化:你当前没有做任何图像预处理,28*28像素的原始0255数值范围过大,会直接让线性层进入ReLU饱和区导致梯度消失。新增归一化逻辑,将输入像素值除以255缩放到01区间,或用数据集均值、标准差做标准化
  • 学习率衰减参数修正:你当前的衰减因子gamma设为0.0005,若为每轮衰减,第一轮后学习率会直接降到5e-8,近似于停止更新。将gamma调整到0.9~0.99区间,或训练前10轮先关闭学习率衰减,待损失稳定下降后再启用
  • 类别权重调整:当前数据集两类占比约1.87:1,属于轻度不均衡,现有权重设置合理。若修复上述问题后仍有偏向,可将少数类权重适当提高到1:2左右测试

验证步骤

修改完成后重新训练3~5个epoch,观察训练损失是否从0.693开始下降,同时打印测试集的预测分布,确认不再出现单类预测的问题。如果仍有异常,可以先检查数据集标签加载逻辑,确认少数类样本的标签没有被错误赋值为多数类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:09:05