天天看點

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_權值初始化梯度消失與爆炸

繼續閱讀