【Pytorch】tensor初始化方法

1. 导入常用初始化方法

from torch.nn.init import xavier_uniform_, xavier_normal_
from torch.nn.init import kaiming_uniform_, kaiming_normal_

2. 各种初始化方法分析

  • xavier_uniform_(tensorgain=1.0)

Note: 以均匀分布的值初始化输入tensor. 方法根据《Understanding the difficulty of training deep feedforward neural networks - Glorot, X. & Bengio, Y. (2010)》论文实现。最终得到的Tesor值取样于U(−a,a) ,

其中: a = gain \ast \sqrt{6 \div fanin + fanout}\

参数:

            gain: 缩放因素(optional)

  • xavier_normal_(tensorgain=1.0)

Note: 以正太分布的值初始化输入tensor. 方法根据《Understanding the difficulty of training deep feedforward neural networks - Glorot, X. & Bengio, Y. (2010)》论文实现。最终得到的Tesor值取样于N(0, std^{2}),

其中: std = gain \ast \sqrt{2 \div fanin + fanout}

  • kaiming_uniform_(tensora=0mode='fan_in'nonlinearity='leaky_relu')

Note: 以均匀分布的值初始化输入tensor. 方法根据《Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification - He, K. et al. (2015)》论文实现。最终得到的Tesor值取样于U(−bound,bound) ,

其中: bound = \sqrt{6 \div (1 + a^{2}) * fanin}

参数:a: 

         mode: "fan_in" 或 "fan_out". 选择“fan_in" 在前向传播中保存权重方差的幅度, ”fan_out" 在后向传播中保存幅度。

        nonlinearity: 非线性函数。推荐"relu" or "leaky_relu".

  • kaiming_normal_(tensora=0mode='fan_in'nonlinearity='leaky_relu')

Note: 以正太分布的值初始化输入tensor. 方法根据《Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification - He, K. et al. (2015)》论文实现。最终得到的Tesor值取样于N(0, std^{2})

其中: std = \sqrt{2 \div fanin × (1 + a^{2})}

 

          

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章