PyTorch中nn.Linear输出随机张量的来源及置零方法咨询
PyTorch线性层问题解答
1. (5,4)输出张量的数值来源
nn.Linear(3,4)初始化时,PyTorch会默认用He正态初始化生成形状为(4,3)的权重矩阵,同时用均匀初始化生成形状为(4,)的偏置向量。你的输入是全1的(5,3)张量,输出的计算逻辑是:output = input @ weight.T + bias
因为输入每行都是[1,1,1],所以每行输出等于权重矩阵对应行的元素之和加上对应位置的偏置,因此所有行输出一致,而数值的随机性完全来自初始化阶段生成的权重和偏置。
2. 如何让输出张量变为全0
有两种实用方法:
- 方法一:重置线性层的权重和偏置为0
linear = nn.Linear(3, 4) # 将权重张量置0 linear.weight.data.zero_() # 将偏置张量置0 linear.bias.data.zero_() input = torch.ones(5, 3) output = linear(input) print(output) # 此时输出为全0的(5,4)张量 - 方法二:直接构造全0张量(无需经过线性层计算)
output = torch.zeros(5, 4)
3. 代码截图问题排查
你提到附上了代码截图,但当前内容里没有包含截图的具体信息,请补充截图中的代码文本或详细描述代码内容,才能帮你排查存在的问题。
内容的提问来源于stack exchange,提问作者user1766349
相关产品推荐
相关产品推荐

