在PyTorch中,默认情况下如何初始化图层权重和偏差?

kno*_*sts 5 python deep-learning pytorch

我想知道默认情况下如何初始化图层权重和偏差?例如,如果我创建线性层torch.nn.Linear(5,100)默认情况下如何初始化此图层的权重和偏差?

Shi*_*hah 5

火炬 1.0

大多数层使用Kaiming Uniform方法初始化。示例层包括 Linear、Conv2d、RNN 等。如果您正在使用其他层,您应该在本文档中查找该层。如果它说使用U(...)它的 Kaiming Uniform 方法初始化权重。偏差使用LeCunn init 初始化,即,uniform(-std, std)其中标准偏差 std 是1/sqrt(fan_in)( code )。

PyTorch 0.4.1、0.3.1

重量和偏见使用初始化LeCunn初始化(见秒4.6)为CONV层(代码:0.3.10.4.1)。

如果要覆盖默认初始化,请参阅此答案


blc*_*ird 3

权重按以下方式初始化:

def reset_parameters(self):
    stdv = 1. / math.sqrt(self.weight.size(1))
    self.weight.data.uniform_(-stdv, stdv)
    if self.bias is not None:
        self.bias.data.uniform_(-stdv, stdv)
Run Code Online (Sandbox Code Playgroud)

https://github.com/pytorch/pytorch/blob/master/torch/nn/modules/linear.py#L48-L52