梯度消失與爆炸
梯度爆炸
要使網絡輸出不能太大不能太小
初始化網絡權值方差
爲了使輸出方差爲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初始化(適用飽和函數)
Kaiming初始化(適用於非飽和)
十種初始化方法