PyTorch 学习笔记(四):权值初始化的十种方法
pytorch在torch.nn.init中提供了常用的初始化方法函数,这里简单介绍,方便查询使用。
介绍分两部分:
1. Xavier,kaiming系列;
2. 其他方法分布
Xavier初始化方法,论文在《Understanding the difficulty of training deep feedforward neural networks》
公式推导是从“方差一致性”出发,初始化的分布有均匀分布和正态分布两种。
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')
2.其他
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)
PyTorch 学习笔记(四):权值初始化的十种方法相关推荐
- PyTorch框架学习十一——网络层权值初始化
PyTorch框架学习十一--网络层权值初始化 一.均匀分布初始化 二.正态分布初始化 三.常数初始化 四.Xavier 均匀分布初始化 五.Xavier正态分布初始化 六.kaiming均匀分布初始 ...
- Tensorflow:BP神经网络权值初始化
一.Tensorflow入门 1.计算图: 每一个计算都是计算图上的一个结点,而节点之间的边描述了计算之间的依赖关系. 支持通过tf.Graph生成新的计算图,不同计算图上的张量和运算不会共享. Te ...
- Pytorch —— 权值初始化
1.梯度消失与爆炸 这里使用一个三层的全连接网络,现在观察一下第二个隐藏层W2W_2W2的权值的梯度是怎么求取的. 根据链式求导法则可以知道,W2W_2W2的求导如下: H2=H1∗W2\math ...
- PyTorch学习笔记(四):PyTorch基础实战
PyTorch实战:以FashionMNIST时装分类为例: 往期学习资料推荐: 1.Pytorch实战笔记_GoAI的博客-CSDN博客 2.Pytorch入门教程_GoAI的博客-CSDN博客 本 ...
- 深度学习--权值初始化
什么是权值初始化 在神经网络的前向传播的过程中,需要设置输入到输出的权重. 为什么要权值初始化 正确的权值初始化可以促进模型的快速收敛,不正确的权值初始化可能使得模型在前向传播是发生发生信息消失,或在 ...
- 3.6 权值初始化-机器学习笔记-斯坦福吴恩达教授
权值初始化 0值初始化 在逻辑回归中,我们通常会初始化所有权值为 0 ,假如在如下的神经网络也采用 0 值初始化: 则可以得到: a1(1)=a2(2)a^{(1)}_1=a^{(2)}_2a1(1) ...
- 深度学习入门之PyTorch学习笔记:深度学习介绍
深度学习入门之PyTorch学习笔记:深度学习介绍 绪论 1 深度学习介绍 1.1 人工智能 1.2 数据挖掘.机器学习.深度学习 1.2.1 数据挖掘 1.2.2 机器学习 1.2.3 深度学习 第 ...
- Pytorch学习笔记总结
往期Pytorch学习笔记总结: 1.Pytorch实战笔记_GoAI的博客-CSDN博客 2.Pytorch入门教程_GoAI的博客-CSDN博客 Pytorch系列目录: PyTorch学习笔记( ...
- PyTorch学习笔记(六):PyTorch进阶训练技巧
PyTorch实战:PyTorch进阶训练技巧 往期学习资料推荐: 1.Pytorch实战笔记_GoAI的博客-CSDN博客 2.Pytorch入门教程_GoAI的博客-CSDN博客 本系列目录: P ...
最新文章
- 在Horizon Workspace中配置Windows单点登录-进阶篇
- 多队列 部分队列没有包_记一次TCP全队列溢出问题排查过程
- android-studio add jar
- Bootstrap进度条堆叠
- Linux系统调用表(x86_64)
- 史上最全 Android 面试资料集合
- 运行时的相互联系(PE、Windows 加载器、应用程序域、程序集清单、元数据、类型、对象、线程栈、托管堆)...
- 阿里开发者招聘节 | 面试题02-04:给定一个二叉搜索树(BST),找到树中第K小的节点...
- 淘宝API 添加上传商品图片
- 想下以前的CyanogenMod 源码怎么办
- windows7下面利用docker搭建jitsi-meet测试环境
- 怎么去除视频字幕清理视频字幕或水印的几种方法
- 获取超级用户访问权限-redhat 7.2
- 中华女子学院计算机考试题库,中华女子学院综合素质测试面试题历年总结
- 「macOS无法验证此APP不包含恶意软件」的处理方式
- 一分钟了解矩阵、方阵、对角矩阵、单位矩阵之间的关系
- python给我做500份问卷
- MySQL分库分表多维度查询——比较好的方法
- 猿团,如何用远程工作技术云平台,打开IT人才共享市场?
- 我是Papi酱,一个集才华与美貌于一身的过气网红
热门文章
- Struts2 Cannot create a session after the response has been committed 一个不起眼的错误
- PyTorch官方中文文档:torch.optim 优化器参数
- 华为+长安研发芯片?长安蔚来更名“阿维塔科技”
- Ascend Pytorch算子功能验证
- 色彩(颜色)空间原理(中)
- 自动驾驶平台,阵营, 主要传感器与场景联系
- 横竖屏切换时Activity的生命周期
- Laravel Redis操作大全
- Laravel7使用Auth进行用户认证
- Android ScrollView 滑动指定的距离