PyTorch 学习笔记(四):权值初始化的十种方法

2019 年 5 月 1 日 极市平台

加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!

同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流点击文末“阅读原文”立刻申请入群~


作者 | 余霆嵩

来源专栏 | PyTorch学习笔记


本文截取自一个github上千星的火爆教程——《PyTorch 模型训练实用教程》教程内容主要为在 PyTorch 中训练一个模型所可能涉及到的方法及函数的详解等,本文为作者整理的学习笔记(四),pytorch在torch.nn.init中提供了常用的初始化方法函数,这里简单介绍,方便查询使用后续会继续更新这个系列,欢迎关注。

项目代码:https://github.com/tensor-yu/PyTorch_Tutorial


系列回顾:



pytorch在torch.nn.init中提供了常用的初始化方法函数,这里简单介绍,方便查询使用。

介绍分两部分:

1. Xavier,kaiming系列;

2. 其他方法分布


Xavier初始化方法,论文在《Understanding the difficulty of training deep feedforward neural networks》


公式推导是从“方差一致性”出发,初始化的分布有均匀分布和正态分布两种。


 Xavier,kaiming系列

1. Xavier均匀分布

torch.nn.init.xavier_uniform_(tensor, gain=1)


xavier初始化方法中服从均匀分布U(−a,a) ,分布的参数a = gain * sqrt(6/fan_in+fan_out),


这里有一个gain,增益的大小是依据激活函数类型来设定


eg:nn.init.xavier_uniform_(w, gain=nn.init.calculate_gain('relu'))


PS:上述初始化方法,也称为Glorot initialization


2. Xavier正态分布

torch.nn.init.xavier_normal_(tensor, gain=1)

xavier初始化方法中服从正态分布,

mean=0,std = gain * sqrt(2/fan_in + fan_out)


kaiming初始化方法,论文在《 Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification》,公式推导同样从“方差一致性”出法,kaiming是针对xavier初始化方法在relu这一类激活函数表现不佳而提出的改进,详细可以参看论文。


3. kaiming均匀分布

torch.nn.init.kaiming_uniform_(tensor, a=0, mode='fan_in', nonlinearity='leaky_relu')


此为均匀分布,U~(-bound, bound), bound = sqrt(6/(1+a^2)*fan_in)


其中,a为激活函数的负半轴的斜率,relu是0


mode- 可选为fan_in 或 fan_out, fan_in使正向传播时,方差一致; fan_out使反向传播时,方差一致


nonlinearity- 可选 relu 和 leaky_relu ,默认值为 。 leaky_relu


nn.init.kaiming_uniform_(w, mode='fan_in', nonlinearity='relu')


4. kaiming正态分布

torch.nn.init.kaiming_normal_(tensor, a=0, mode='fan_in', nonlinearity='leaky_relu')


此为0均值的正态分布,N~ (0,std),其中std = sqrt(2/(1+a^2)*fan_in)


其中,a为激活函数的负半轴的斜率,relu是0


mode- 可选为fan_in 或 fan_out, fan_in使正向传播时,方差一致;fan_out使反向传播时,方差一致


nonlinearity- 可选 relu 和 leaky_relu ,默认值为 。 leaky_relu


nn.init.kaiming_normal_(w, mode='fan_out', nonlinearity='relu')



其他方法分布


5. 均匀分布初始化

torch.nn.init.uniform_(tensor, a=0, b=1)

使值服从均匀分布U(a,b)


6. 正态分布初始化

torch.nn.init.normal_(tensor, mean=0, std=1)

使值服从正态分布N(mean, std),默认值为0,1


7. 常数初始化

torch.nn.init.constant_(tensor, val)

使值为常数val nn.init.constant_(w, 0.3)


8. 单位矩阵初始化

torch.nn.init.eye_(tensor)

将二维tensor初始化为单位矩阵(the identity matrix)


9. 正交初始化

torch.nn.init.orthogonal_(tensor, gain=1)

使得tensor是正交的,论文:Exact solutions to the nonlinear dynamics of learning in deep linear neural networks” - Saxe, A. et al. (2013)


10. 稀疏初始化

torch.nn.init.sparse_(tensor, sparsity, std=0.01)


从正态分布N~(0. std)中进行稀疏化,使每一个column有一部分为0


sparsity- 每一个column稀疏的比例,即为0的比例


nn.init.sparse_(w, sparsity=0.1)


11. 计算增益

torch.nn.init.calculate_gain(nonlinearity, param=None)





*延伸阅读



点击左下角阅读原文”,即可申请加入极市目标跟踪、目标检测、工业检测、人脸方向、视觉竞赛等技术交流群,更有每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流,一起来让思想之光照的更远吧~


觉得有用麻烦给个在看啦~  

登录查看更多
14

相关内容

一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
专知会员服务
107+阅读 · 2020年5月21日
一份简短《图神经网络GNN》笔记,入门小册
专知会员服务
224+阅读 · 2020年4月11日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
163+阅读 · 2019年10月28日
PyTorch模型训练特征图可视化(TensorboardX)
极市平台
33+阅读 · 2019年6月29日
vae学习笔记
CreateAMind
22+阅读 · 2019年6月18日
PyTorch 学习笔记(七):PyTorch的十个优化器
极市平台
8+阅读 · 2019年5月19日
PyTorch 学习笔记(六):PyTorch的十七个损失函数
极市平台
47+阅读 · 2019年5月13日
PyTorch 学习笔记(五):Finetune和各层定制学习率
PyTorch 学习笔记(三):transforms的二十二个方法
极市平台
12+阅读 · 2019年4月28日
PyTorch 学习笔记(一):让PyTorch读取你的数据集
极市平台
16+阅读 · 2019年4月24日
快速上手笔记,PyTorch模型训练实用教程(附代码)
Meta-Learning to Cluster
Arxiv
17+阅读 · 2019年10月30日
Arxiv
4+阅读 · 2018年3月30日
Arxiv
7+阅读 · 2018年3月22日
Arxiv
5+阅读 · 2018年1月29日
VIP会员
相关资讯
PyTorch模型训练特征图可视化(TensorboardX)
极市平台
33+阅读 · 2019年6月29日
vae学习笔记
CreateAMind
22+阅读 · 2019年6月18日
PyTorch 学习笔记(七):PyTorch的十个优化器
极市平台
8+阅读 · 2019年5月19日
PyTorch 学习笔记(六):PyTorch的十七个损失函数
极市平台
47+阅读 · 2019年5月13日
PyTorch 学习笔记(五):Finetune和各层定制学习率
PyTorch 学习笔记(三):transforms的二十二个方法
极市平台
12+阅读 · 2019年4月28日
PyTorch 学习笔记(一):让PyTorch读取你的数据集
极市平台
16+阅读 · 2019年4月24日
快速上手笔记,PyTorch模型训练实用教程(附代码)
相关论文
Meta-Learning to Cluster
Arxiv
17+阅读 · 2019年10月30日
Arxiv
4+阅读 · 2018年3月30日
Arxiv
7+阅读 · 2018年3月22日
Arxiv
5+阅读 · 2018年1月29日
Top
微信扫码咨询专知VIP会员