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

时间:2018-01-30 20:03:40

标签: python deep-learning pytorch

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

2 个答案:

答案 0 :(得分: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)

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

答案 1 :(得分:2)

PyTorch 1.0

大多数图层都是使用Kaiming Uniform方法初始化的。示例层包括线性,Conv2d,RNN等。如果使用其他层,则应在this doc上查找该层。如果说权重是使用U(...)初始化的,则使用其Kaiming Uniform方法。使用LeCunn init(即uniform(-std, std))初始化偏差,其中标准偏差std为1/sqrt(fan_in)code)。

PyTorch 0.4.1,0.3.1

对于转化层(代码:LeCunn init0.3.1),使用0.4.1(请参见4.6节)初始化权重和偏差。

如果您想覆盖默认初始化,请使用see this answer