【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})}

 

          

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值