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

PyTorch优化器失效及RuntimeError报错原因咨询(附代码)

问题原因与解决办法

报错核心原因

你代码里的w、BH、WH、BO这些要训练的参数,默认是不计算梯度的(PyTorch新建张量时requires_grad默认是False)。反向传播的本质是顺着计算图倒推每个参数对loss的影响,只有开启梯度的张量才会被PyTorch记录运算过程(也就是报错里说的grad_fn)。这些参数没开梯度,loss.backward()自然找不到梯度信息,就会抛出那个错误。

为什么设置loss_fin.requires_grad=True没用

loss是模型输出经过运算得到的结果,就算你强制给它开梯度,源头的参数本身没开梯度,整个计算链里还是没有任何梯度记录。优化器更新参数需要的是每个参数自己的梯度,不是loss的梯度,所以这么做只会让代码不报错,但参数根本不会被更新。

解决办法

定义参数的时候,给每个参数加上requires_grad=True,让PyTorch知道要追踪它们的梯度:

w = torch.rand(3,4, requires_grad=True)
BH = torch.rand(3, requires_grad=True)
WH = torch.rand(3, requires_grad=True)
BO = torch.rand(1, requires_grad=True)

另外你代码里的x没定义,运行前要补上输入,比如x = torch.rand(4)(和w的维度匹配)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:32:34