天天看点

pytorch_权值初始化梯度消失与爆炸

权值初始化

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

梯度消失与爆炸

梯度爆炸

pytorch_权值初始化梯度消失与爆炸

要使网络输出不能太大不能太小

pytorch_权值初始化梯度消失与爆炸

初始化网络权值方差

为了使输出方差为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_权值初始化梯度消失与爆炸

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

pytorch_权值初始化梯度消失与爆炸

十种初始化方法

pytorch_权值初始化梯度消失与爆炸
pytorch_权值初始化梯度消失与爆炸

继续阅读