文章目录

  • 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)∗fani​n2​​ 的正态分布
参考: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 初始化相关推荐

  1. 【torch.nn.init】初始化参数方法解读

    文章目录 torch.nn.init 均匀分布 正态分布 常数分布 全1分布 全0分布 对角分布 dirac 分布 xavier_uniform 分布 xavier_normal 分布 kaiming ...

  2. 正态分布初始化 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 ...

  3. PyTorch 1.0 中文文档:torch.nn.init

    译者:GeneZC torch.nn.init.calculate_gain(nonlinearity, param=None) 返回给定非线性函数的推荐的增益值.对应关系如下表: 非线性函数 增益 ...

  4. 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 ...

  5. pytorch tensor 初始化_Pytorch - nn.init 参数初始化方法

    Pytorch 的参数初始化 - 给定非线性函数的推荐增益值(gain value):nonlinearity 非线性函数gain 增益 Linear / Identity1 Conv{1,2,3}D ...

  6. 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 ...

  7. 【pytorch 】nn.init 中实现的初始化函数 normal, Xavier==》为了保证数据的分布(均值方差一致)是一样的,类似BN

    为什么要输入和输出的方差相同?有利于信息的传递 为了使得网络中信息更好的流动,每一层输出的方差应该尽量相等.在考虑线性激活函数的情况下, 在初始化的时候使各层神经元的方差保持不变, 即使各层有着相同的 ...

  8. torch.nn.Module()

    torch.nn.Module() 如果自己想研究,官方文档 它是所有的神经网络的根父类! 你的神经网络必然要继承! 模块也可以包含其他模块,允许将它们嵌套在树结构中.所以呢,你可以将子模块指定为常规 ...

  9. Torch的参数初始化

    1.不需要初始化 调用nn.Linear()等封装好的模块,不需要初始化 def __init__(self, embed_size, heads, adj, dropout, forward_exp ...

最新文章

  1. python编程和c语言编程的区别-通过实例浅析Python对比C语言的编程思想差异
  2. Linux指定网卡工作模式
  3. 状态管理 - 全局状态管理工具
  4. FreeRTOS | STM32H7串口中断调用FreeRTOS API,导致程序卡死
  5. Path(1)vrep中的贝塞尔点、控制点的简单区分
  6. php取整数余数,js取整数、取余数的方法
  7. python batch_size_深度学习中的batch的大小对学习效果有何影响?
  8. Python程序设计学习笔记-语句与格式化输出
  9. 贝莱德COO:作为全球最大资产管理公司,为什么说我们还是成长中的科技公司?
  10. 《21天学通Java(第7版)》——VC程序员的学习笔记2
  11. python画正弦函数_python 图像处理画一个正弦函数代码实例
  12. 第11章 UART串口通信 练习题
  13. 解决谷歌浏览器最新chrome94版本CORS跨域问题
  14. “本人成分” 如何填写
  15. matlab计算热岛效应强度,城市热岛热岛强度.ppt
  16. 仿京东 分类 购物车 + 定位
  17. 24只胡萝卜的管理精神(节录)
  18. inux常用命令-持续更新中(转载:小牛导航,super-nb)
  19. 瞄准物联网末端一公里
  20. Python 字符串常见的语句,和练习题,字符串练习题 Python 切片函数修饰符 #精度和进制Python 字符串一些语句练课件练习题

热门文章

  1. 下载centos7.6光盘映像文件,使用VMware12创建虚拟机,设置固定IP,最全图文教程
  2. 股票量化分析系统浅析之(三)归一化与标准化
  3. unity3D赛车游戏项目源代码
  4. PS流包格式之PS/SYS/PSM/PES头
  5. 学习笔记:有源晶振与无源晶振(一)
  6. (转)世界上最美丽的英文
  7. 借游戏带动“卖铲”收益,“卖铲子”的Unity借元宇宙起飞?
  8. 浅谈我的建站经验之导航设置
  9. 执法文书打印的实现(二):基于freemaker技术生成可打印的word文档
  10. 可使用计算机打印的方式替代,邮政投递员高级理论知识试卷02