In PyTorch how are layer weights and biases initialized by default?

橙三吉。 提交于 2021-02-04 17:38:05

问题


I was wondering how are layer weights and biases initialized by default? E.g. if I create the linear layer torch.nn.Linear(5,100) How are weights and biases for this layer initialized by default?


回答1:


PyTorch 1.0

Most layers are initialized using Kaiming Uniform method. Example layers include Linear, Conv2d, RNN etc. If you are using other layers, you should look up that layer on this doc. If it says weights are initialized using U(...) then its Kaiming Uniform method. Bias is initialized using LeCunn init, i.e., uniform(-std, std) where standard deviation std is 1/sqrt(fan_in) (code).

PyTorch 0.4.1, 0.3.1

Weights and biases are initialized using LeCunn init (see sec 4.6) for conv layers (code: 0.3.1, 0.4.1).

If you want to override default initialization then see this answer.




回答2:


The weights are initilized in the following way:

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



来源:https://stackoverflow.com/questions/48529625/in-pytorch-how-are-layer-weights-and-biases-initialized-by-default

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!