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

固定权重的PyTorch nn.Linear相同输入输出值不同的原因

随机性来源于torch.nn.Linear层默认启用的随机初始化偏置项。

具体原因

torch.nn.Linear默认会启用可训练偏置参数,你仅手动将权重修改为了全1,没有修改偏置的取值:

  • 偏置参数在层实例化时会默认从均匀分布U(-√(1/in_features), √(1/in_features))中采样,你这里in_features=3,所以偏置的采样范围约为±0.577,和你观测到的输出在2.5~3.5区间浮动的现象完全吻合。
  • 你的输入为[1,1,1],最终计算逻辑为:1*1 + 1*1 + 1*1 + 偏置值 = 3 + 偏置值,所以每次运行输出会随偏置的随机初始化波动。

修复方法

你可以任选以下一种方案解决:

  1. 实例化Linear层时直接关闭偏置,去掉额外的随机参数:
self.fc1 = torch.nn.Linear(3, 1, bias=False)
  1. 保留偏置的同时手动将其固定为固定值(比如0),在你现有的权重赋值逻辑后添加偏置赋值代码:
with torch.no_grad():
    self.fc1.weight = torch.nn.Parameter(torch.ones_like(self.fc1.weight))
    # 新增偏置固定逻辑
    self.fc1.bias = torch.nn.Parameter(torch.zeros_like(self.fc1.bias))

修改后重新运行代码,输出就会固定为你预期的3。

内容的提问来源于stack exchange,提问作者Justin P.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 06:54:03