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

12

我想知道层权重和偏差默认是如何初始化的?例如,如果我创建一个线性层torch.nn.Linear(5,100),那么这个层的权重和偏差会如何被默认初始化?

2个回答

8

PyTorch 1.0

大多数层使用 Kaiming Uniform方法进行初始化。示例层包括Linear、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进行初始化(参见第4.6节)用于卷积层(代码:0.3.10.4.1)。

如果您想覆盖默认的初始化,则请参阅此答案


这个有变化吗?我的意思是 Pytorch 0.3 直到现在都不是这种情况吗? - Hossein
1
是的,这在1.0中已经更改了。我已经更新了答案。 - Shital Shah

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接