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

PyTorch二分类训练交叉熵损失初始值错误且训练无变化如何解决?

代码存在的问题如下:

  • 优化器绑定参数错误
    你实例化的模型变量是nn_model,但创建优化器时传入的是未定义的model.parameters(),优化器完全没有关联到你实际训练的模型参数,训练过程中参数不会得到任何更新,这是损失全程不变的核心原因。
    修正方式:将优化器初始化代码改为
    optimizer = optim.Adam(nn_model.parameters(), lr=1e-4, weight_decay=5e-3)
    
  • BatchNorm1d维度配置错误
    经过nn.Linear(128, 64)层后,输出特征维度是(batch_size, 64),而你设置的nn.BatchNorm1d(1)要求输入的特征维度为1,会直接破坏特征分布,也会导致初始损失偏离理论值。
    修正方式:将BatchNorm层改为
    nn.BatchNorm1d(64)
    
  • 标签类型不符合损失函数要求
    nn.CrossEntropyLoss()要求输入的标签为torch.long类型,你在读取标签时调用了.float()转为浮点型,可能导致损失计算逻辑异常。
    修正方式:将读取标签的代码改为
    inputs, labels = data['embeddings'], data['labels'].long()
    
  • 额外优化建议:当前训练轮次只设置了2轮,若数据集规模较大可能还没收敛,可以根据验证集效果适当上调训练轮次。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:45:03