【细聊】torch.nn.init 初始化
文章目录
- 1、init.uniform
- 2、nn.init.normal
- 3、nn.init.constant
- 4、nn.init.eye
- 5、nn.init.dirac
- 6、nn.init.xavier_uniform
- 7、nn.init.xavier_normal
- 8、nn.init.kaiming_uniform
- 9、nn.init.kaiming_normal
- 10、nn.init.orthogonal
- 11、nn.init.sparse
1、init.uniform
init.uniform(tensor, a=0, b=1)>>> w = torch.Tensor(3, 5)
>>> nn.init.uniform(w)
从均匀分布 U(a,b)\mathcal{U}(a, b)U(a,b)中生成值,填充输入的张量或变量
Parameters:
- tensor - n维的torch.Tensor
- a - 均匀分布的下界
- b - 均匀分布的上界
2、nn.init.normal
nn.init.normal(tensor, mean=0, std=1)>>> w = torch.Tensor(3, 5)
>>> nn.init.normal(w)
从给定均值和标准差的正态分布 N(mean,std)\mathcal{N}(mean, std)N(mean,std)中生成值,填充输入的张量或变量
Parameters:
- tensor – n维的torch.Tensor
- mean – 正态分布的均值
- std – 正态分布的标准差
3、nn.init.constant
nn.init.constant(tensor, val)>>> w = torch.Tensor(3, 5)
>>> nn.init.constant(w)
用val的值填充输入的张量或变量
Parameters:
- tensor – n维的torch.Tensor 或 autograd.Variable
- val – 用来填充张量的值
4、nn.init.eye
nn.init.eye(tensor)>>> w = torch.Tensor(3, 5)
>>> nn.init.eye(w)
用单位矩阵来填充2维输入张量或变量。在线性层尽可能多的保存输入特性
Parameters:
- tensor – 2维的torch.Tensor 或 autograd.Variable
5、nn.init.dirac
nn.init.dirac(tensor)>>> w = torch.Tensor(3, 16, 5, 5)
>>> nn.init.dirac(w)
用Dirac δ\deltaδ 函数来填充{3, 4, 5}维输入张量或变量。在卷积层尽可能多的保存输入通道特性
Parameters:
- tensor – {3, 4, 5}维的torch.Tensor 或 autograd.Variable
6、nn.init.xavier_uniform
nn.init.xavier_uniform(tensor, gain=1)>>> w = torch.Tensor(3, 5)
>>> nn.init.xavier_uniform(w, gain=math.sqrt(2.0))
用一个均匀分布生成值,填充输入的张量或变量。结果张量中的值采样自U(-a, a),其中 a=gain∗6fan_in+fan_outa= gain * \sqrt{ \frac{6}{fan\_in + fan\_out}}a=gain∗fan_in+fan_out6,该方法也被称为Glorot initialisation
参考:Glorot, X.和Bengio, Y.等“Understanding the difficulty of training deep feedforward neural networks”
Parameters:
- tensor – n维的torch.Tensor
- gain - 可选的缩放因子
7、nn.init.xavier_normal
nn.init.xavier_normal(tensor, gain=1)>>> w = torch.Tensor(3, 5)
>>> nn.init.xavier_normal(w)
用一个正态分布生成值,填充输入的张量或变量。结果张量中的值采样自均值为0,标准差为 gain∗2fan_in+fan_outgain * \sqrt{\frac{2}{fan\_in + fan\_out}}gain∗fan_in+fan_out2 的正态分布。也被称为Glorot initialisation
参考:Glorot, X.和Bengio, Y. 等“Understanding the difficulty of training deep feedforward neural networks”
Parameters:
- tensor – n维的torch.Tensor
- gain - 可选的缩放因子
8、nn.init.kaiming_uniform
nn.init.kaiming_uniform(tensor, a=0, mode='fan_in',nonlinearity='leaky_relu')>>> w = torch.Tensor(3, 5)
>>> nn.init.kaiming_uniform(w, mode='fan_in')
用一个均匀分布生成值,填充输入的张量或变量。结果张量中的值采样自U(-bound, bound),其中 bound=gain×3fan_modebound = gain \times \sqrt{\frac{3}{fan\_mode}}bound=gain×fan_mode3,也被称为He initialisation
参考:He, K等“Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification”
Parameters:
- tensor – n维的torch.Tensor或autograd.Variable
- a -这层之后使用的rectifier的斜率系数(ReLU的默认值为0)
- mode -可以为“fan_in”(默认)或 “fan_out”
“fan_in”保留前向传播时权值方差的量级
“fan_out”保留反向传播时的量级 - nonlinearity=‘leaky_relu’ - 非线性函数 建议“relu”或“leaky_relu”(默认值)使用。
9、nn.init.kaiming_normal
nn.init.kaiming_normal(tensor, a=0, mode='fan_in')>>> w = torch.Tensor(3, 5)
>>> nn.init.kaiming_normal(w, mode='fan_out')
用一个正态分布生成值,填充输入的张量或变量。结果张量中的值采样自均值为0,标准差为 std=2(1+a2)∗faninstd=\sqrt{\frac{2}{(1 + a^2) * fan_in}}std=(1+a2)∗fanin2 的正态分布
参考:He, K 在 “Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification”
Parameters:
- tensor – n维的torch.Tensor或 autograd.Variable
- a -这层之后使用的rectifier的斜率系数(ReLU的默认值为0)
- mode -可以为“fan_in”(默认)或 “fan_out”
“fan_in”保留前向传播时权值方差的量级
“fan_out”保留反向传播时的量级
10、nn.init.orthogonal
nn.init.orthogonal(tensor, gain=1)>>> w = torch.Tensor(3, 5)
>>> nn.init.orthogonal(w)
用(半)正交矩阵填充输入的张量或变量。输入张量必须至少是2维的,对于更高维度的张量,超出的维度会被展平,视作行等于第一个维度,列等于稀疏矩阵乘积的2维表示
【其中非零元素生成自均值为0,标准差为std的正态分布】
参考:Saxe, A等人(2013)的“Exact solutions to the nonlinear dynamics of learning in deep linear neural networks”
Parameters:
- tensor – n维的torch.Tensor 或 autograd.Variable,其中n>=2
- gain -可选
11、nn.init.sparse
nn.init.sparse(tensor, sparsity, std=0.01)>>> w = torch.Tensor(3, 5)
>>> nn.init.sparse(w, sparsity=0.1)
将2维的输入张量或变量当做 稀疏矩阵填充,其中非零元素根据一个均值为0,标准差为std的正态分布生成
参考:Martens, J.(2010)的 “Deep learning via Hessian-free optimization”
Parameters:
- tensor – n维的torch.Tensor或autograd.Variable
- sparsity - 每列中需要被设置成零的元素比例
- std - 用于生成非零值的正态分布的标准差
【细聊】torch.nn.init 初始化相关推荐
- 【torch.nn.init】初始化参数方法解读
文章目录 torch.nn.init 均匀分布 正态分布 常数分布 全1分布 全0分布 对角分布 dirac 分布 xavier_uniform 分布 xavier_normal 分布 kaiming ...
- 正态分布初始化 torch.nn.Embedding.weight()与torch.nn.init.normal()的验证对比
torch.nn.Embedding.weight(num_embeddings, embedding_dim) 随机初始化,生成标准正态分布N(0,1)N(0,1)N(0,1)的张量Tensor t ...
- PyTorch 1.0 中文文档:torch.nn.init
译者:GeneZC torch.nn.init.calculate_gain(nonlinearity, param=None) 返回给定非线性函数的推荐的增益值.对应关系如下表: 非线性函数 增益 ...
- AttributeError: module 'torch.nn.init' has no attribute 'zeros_'
问题 File "E:\wj-lab\expStad\model.py", line 50, in __init__feat_block.apply(weights_init_ka ...
- pytorch tensor 初始化_Pytorch - nn.init 参数初始化方法
Pytorch 的参数初始化 - 给定非线性函数的推荐增益值(gain value):nonlinearity 非线性函数gain 增益 Linear / Identity1 Conv{1,2,3}D ...
- pytorch系列 -- 9 pytorch nn.init 中实现的初始化函数 uniform, normal, const, Xavier, He initialization...
本文内容: 1. Xavier 初始化 2. nn.init 中各种初始化函数 3. He 初始化 torch.init https://pytorch.org/docs/stable/nn.html ...
- 【pytorch 】nn.init 中实现的初始化函数 normal, Xavier==》为了保证数据的分布(均值方差一致)是一样的,类似BN
为什么要输入和输出的方差相同?有利于信息的传递 为了使得网络中信息更好的流动,每一层输出的方差应该尽量相等.在考虑线性激活函数的情况下, 在初始化的时候使各层神经元的方差保持不变, 即使各层有着相同的 ...
- torch.nn.Module()
torch.nn.Module() 如果自己想研究,官方文档 它是所有的神经网络的根父类! 你的神经网络必然要继承! 模块也可以包含其他模块,允许将它们嵌套在树结构中.所以呢,你可以将子模块指定为常规 ...
- Torch的参数初始化
1.不需要初始化 调用nn.Linear()等封装好的模块,不需要初始化 def __init__(self, embed_size, heads, adj, dropout, forward_exp ...
最新文章
- python编程和c语言编程的区别-通过实例浅析Python对比C语言的编程思想差异
- Linux指定网卡工作模式
- 状态管理 - 全局状态管理工具
- FreeRTOS | STM32H7串口中断调用FreeRTOS API,导致程序卡死
- Path(1)vrep中的贝塞尔点、控制点的简单区分
- php取整数余数,js取整数、取余数的方法
- python batch_size_深度学习中的batch的大小对学习效果有何影响?
- Python程序设计学习笔记-语句与格式化输出
- 贝莱德COO:作为全球最大资产管理公司,为什么说我们还是成长中的科技公司?
- 《21天学通Java(第7版)》——VC程序员的学习笔记2
- python画正弦函数_python 图像处理画一个正弦函数代码实例
- 第11章 UART串口通信 练习题
- 解决谷歌浏览器最新chrome94版本CORS跨域问题
- “本人成分” 如何填写
- matlab计算热岛效应强度,城市热岛热岛强度.ppt
- 仿京东 分类 购物车 + 定位
- 24只胡萝卜的管理精神(节录)
- inux常用命令-持续更新中(转载:小牛导航,super-nb)
- 瞄准物联网末端一公里
- Python 字符串常见的语句,和练习题,字符串练习题 Python 切片函数修饰符 #精度和进制Python 字符串一些语句练课件练习题
热门文章
- 下载centos7.6光盘映像文件,使用VMware12创建虚拟机,设置固定IP,最全图文教程
- 股票量化分析系统浅析之(三)归一化与标准化
- unity3D赛车游戏项目源代码
- PS流包格式之PS/SYS/PSM/PES头
- 学习笔记:有源晶振与无源晶振(一)
- (转)世界上最美丽的英文
- 借游戏带动“卖铲”收益,“卖铲子”的Unity借元宇宙起飞?
- 浅谈我的建站经验之导航设置
- 执法文书打印的实现(二):基于freemaker技术生成可打印的word文档
- 可使用计算机打印的方式替代,邮政投递员高级理论知识试卷02