pytorch_权值初始化

权值初始化

  • 梯度消失与爆炸
    • 梯度爆炸
      • 初始化网络权值方差
    • 梯度消失
      • Xavier初始化(适用饱和函数)
      • Kaiming初始化(适用于非饱和)
    • 十种初始化方法

梯度消失与爆炸

梯度爆炸

pytorch_权值初始化_第1张图片
要使网络输出不能太大不能太小
pytorch_权值初始化_第2张图片

初始化网络权值方差

为了使输出方差为1,将网络权值的方差设为

    def initialize(self):
        for m in self.modules():
            if isinstance(m, nn.Linear):
                nn.init.normal_(m.weight.data, std=np.sqrt(1/self.neural_num))    # normal: mean=0, std=1

梯度消失

若输出加入激活函数,会使网络层的输出层数据越来越小,从而导致梯度消失

Xavier初始化(适用饱和函数)

pytorch_权值初始化_第3张图片

Kaiming初始化(适用于非饱和)

pytorch_权值初始化_第4张图片

十种初始化方法

pytorch_权值初始化_第5张图片
pytorch_权值初始化_第6张图片

你可能感兴趣的:(pytorch)