我想知道默认情况下如何初始化图层权重和偏差?例如。如果我创建线性图层 torch.nn.Linear(5100) 默认情况下,如何初始化此图层的权重和偏差?
答案 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 init,0.3.1),使用0.4.1(请参见4.6节)初始化权重和偏差。
如果您想覆盖默认初始化,请使用see this answer。