当前位置: 首页 > news >正文

深入浅出Pytorch函数——torch.nn.init.xavier_normal_

分类目录:《深入浅出Pytorch函数》总目录
相关文章:
· 深入浅出Pytorch函数——torch.nn.init.calculate_gain
· 深入浅出Pytorch函数——torch.nn.init.uniform_
· 深入浅出Pytorch函数——torch.nn.init.normal_
· 深入浅出Pytorch函数——torch.nn.init.constant_
· 深入浅出Pytorch函数——torch.nn.init.ones_
· 深入浅出Pytorch函数——torch.nn.init.zeros_
· 深入浅出Pytorch函数——torch.nn.init.eye_
· 深入浅出Pytorch函数——torch.nn.init.dirac_
· 深入浅出Pytorch函数——torch.nn.init.xavier_uniform_
· 深入浅出Pytorch函数——torch.nn.init.xavier_normal_
· 深入浅出Pytorch函数——torch.nn.init.kaiming_uniform_
· 深入浅出Pytorch函数——torch.nn.init.kaiming_normal_
· 深入浅出Pytorch函数——torch.nn.init.trunc_normal_
· 深入浅出Pytorch函数——torch.nn.init.orthogonal_
· 深入浅出Pytorch函数——torch.nn.init.sparse_


torch.nn.init模块中的所有函数都用于初始化神经网络参数,因此它们都在torc.no_grad()模式下运行,autograd不会将其考虑在内。

根据Glorot, X.和Bengio, Y.在《Understanding the difficulty of training deep feedforward neural networks》中描述的方法,用一个正态分布生成值,填充输入的张量或变量。结果张量中的值采样自 N ( 0 , std 2 ) N(0, \text{std}^2) N(0,std2)的正态分布,其中标准差:
std = gain × 2 fan_in + fan_put \text{std}=\text{gain}\times\sqrt{\frac{2}{\text{fan\_in}+\text{fan\_put}}} std=gain×fan_in+fan_put2

这种方法也被称为Glorot initialisation。

语法

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

参数

  • tensor:[Tensor] 一个 N N N维张量torch.Tensor
  • gain :[float] 可选的缩放因子

返回值

一个torch.Tensor且参数tensor也会更新

实例

w = torch.empty(3, 5)
nn.init.xavier_normal_(w)

函数实现

def xavier_normal_(tensor: Tensor, gain: float = 1.) -> Tensor:r"""Fills the input `Tensor` with values according to the methoddescribed in `Understanding the difficulty of training deep feedforwardneural networks` - Glorot, X. & Bengio, Y. (2010), using a normaldistribution. The resulting tensor will have values sampled from:math:`\mathcal{N}(0, \text{std}^2)` where.. math::\text{std} = \text{gain} \times \sqrt{\frac{2}{\text{fan\_in} + \text{fan\_out}}}Also known as Glorot initialization.Args:tensor: an n-dimensional `torch.Tensor`gain: an optional scaling factorExamples:>>> w = torch.empty(3, 5)>>> nn.init.xavier_normal_(w)"""fan_in, fan_out = _calculate_fan_in_and_fan_out(tensor)std = gain * math.sqrt(2.0 / float(fan_in + fan_out))return _no_grad_normal_(tensor, 0., std)
http://www.lryc.cn/news/133167.html

相关文章:

  • Abandon_Ubuntu Declaration
  • Java设计模式-抽象工厂模式
  • Rust语法:所有权引用生命周期
  • 办手机卡/流量卡需要问清楚啥?
  • vim基本使用方法
  • 漏洞指北-VulFocus靶场专栏-入门
  • 管理类联考——逻辑——真题篇——按知识分类——汇总篇——二、论证逻辑——推论——第二节——数字推理题
  • git基础教程(24) git reflog查看引用日志
  • 成都爱尔谭娇主任提醒孩子不停揉眼睛是因为什么
  • 医疗设备管理软件哪家好?医院设备全生命周期管理要怎么做?
  • 基于PaddlePaddle实现的声纹识别系统
  • 使用GDB工具分析core文件的方法
  • Maven - 统一构建规范:Maven 插件管理最佳实践
  • 对接海康明眸门禁设备-删除人员信息
  • LEADTOOLS Imaging SDK Crack
  • 2023并发之八股文——面试题
  • 操作记录日志保存设计实现
  • PL 侧驱动和fpga 重加载的方法
  • 【2023最新爬虫】用python爬取知乎任意问题下的全部回答
  • Bingchat和ChatGPT主要区别
  • Docker容器:docker镜像的创建及dockerfile
  • Vue3 父子组件数据传递
  • Eureka:集群环境配置
  • springboot之多数据源配置
  • 无涯教程-PHP - 静态变量函数
  • 2023-08-20力扣今日二题
  • 【地理专题】2023年最新全国A级景区数
  • Elasticsearch实战(一):Springboot实现Elasticsearch统一检索功能
  • 更改计算机睡眠时间
  • Matplotlib数据可视化(一)