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

PyTorch简易线性回归模型Bias参数不更新问题排查

线性回归模型中bias参数不更新问题排查

我正在跟随PyTorch教程搭建一个简易线性回归模型,相关代码如下:

class LinearRegression(nn.Module):

  def __init__(self):
    super().__init__()

    self.bias = nn.Parameter(torch.randn(1, requires_grad = True, dtype = torch.float))
    self.weights = nn.Parameter(torch.randn(1, requires_grad = True, dtype = torch.float))


  def forward(self, x: torch.Tensor) -> torch.Tensor:
    return self.weights * x + bias

我使用SGD作为优化器(学习率0.01),MAE作为损失函数。无论调整何种参数,bias参数始终不更新,但weight参数更新正常。我已尝试参数克隆,但并未解决问题。模型初始化代码如下:

torch.manual_seed(42)

model = LinearRegression()

list(model.parameters())

打印参数显示正常,请问我哪里出错了?


问题原因与解决方案

问题出在forward方法的变量引用错误:你调用了未定义的全局变量bias,而非模型实例的self.bias。

由于forward中未引用self.bias,PyTorch自动求导机制不会为该参数计算梯度,优化器自然无法更新它。

修改后的forward方法代码如下:

def forward(self, x: torch.Tensor) -> torch.Tensor:
    return self.weights * x + self.bias

修改后模型计算输出时会正确关联实例的bias参数,自动求导会生成对应梯度,SGD优化器即可正常更新bias参数。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:32:06