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

PyTorch训练ANN时损失函数恒定不变的问题求助

损失函数始终不变的原因分析

训练人工神经网络时损失全程固定,核心原因是优化器未执行参数更新操作。

你的代码中,训练循环的最后一行存在语法错误:

optimizer.step

这只是引用了优化器的step方法对象,并没有实际调用它。必须加上括号optimizer.step(),才能触发优化器根据反向传播得到的梯度更新模型权重。

因为权重参数在整个训练过程中完全没有变化,每次前向传播计算的损失值自然完全一致。

修正后的训练循环代码如下:

epoch=100
losses=[]
for i in range(epoch):
    y_pred=model.forward(X_train)
    loss=criterion(y_pred,y_train)
    losses.append(loss.item())
    if i%10==0:
        print(f'epoch{i} and loss is :{loss}')
    
    optimizer.zero_grad()
    loss.backward()
    # 修正:调用step方法更新参数
    optimizer.step()

额外检查项:

  • 确认iris.csv加载正常,target列是正确的分类标签(0、1、2)
  • 数据转换为张量的步骤无误,X_train、y_train的格式符合模型输入要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 21:46:33