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

pytorch 获取模型参数_[PyTorch]PyTorch中模型的参数初始化的几种方法(转)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

转载请注明出处:

参考网址:

说明:暂时就这么多吧,错误之处请见谅。前两个初始化的方法见pytorch官方文档

1. xavier初始化

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

对于输入的tensor或者变量,通过论文Understanding the difficulty of training deep feedforward neural networks” - Glorot, X. & Bengio, Y. (2010)的方法初始化数据。初始化服从均匀分布,其中,该初始化方法也称Glorot initialisation。

参数:

tensor:n维的 torch.Tensor 或者 autograd.Variable类型的数据

a:可选择的缩放参数

例如:

w = torch.Tensor(3, 5)

nn.init.xavier_uniform(w, gain=nn.init.calculate_gain(‘relu‘))

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

对于输入的tensor或者变量,通过论文Understanding the difficulty of training deep feedforward neural networks” - Glorot, X. & Bengio, Y. (2010)的方法初始化数据。初始化服从高斯分布,其中,该初始化方法也称Glorot initialisation。

参数:

tensor:n维的 torch.Tensor 或者 autograd.Variable类型的数据

a:可选择的缩放参数

例如:

w = torch.Tensor(3, 5)

nn.init.xavier_normal(w)

2. kaiming初始化

torch.nn.init.kaiming_uniform(tensor, a=0, mode=‘fan_in‘)

对于输入的tensor或者变量,通过论文“Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification” - He, K. et al. (2015)的方法初始化数据。初始化服从均匀分布,其中,该初始化方法也称He initialisation。

参数:

tensor:n维的 torch.Tensor 或者 autograd.Variable类型的数据

a:该层后面一层的激活函数中负的斜率(默认为ReLU,此时a=0)

mode:‘fan_in’ (default) 或者 ‘fan_out’. 使用fan_in保持weights的方差在前向传播中不变;使用fan_out保持weights的方差在反向传播中不变。

例如:

w = torch.Tensor(3, 5)

nn.init.kaiming_uniform(w, mode=‘fan_in‘)

torch.nn.init.kaiming_normal(tensor, a=0, mode=‘fan_in‘)

对于输入的tensor或者变量,通过论文“Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification” - He, K. et al. (2015)的方法初始化数据。初始化服从高斯分布,其中,该初始化方法也称He initialisation。

参数:

tensor:n维的 torch.Tensor 或者 autograd.Variable类型的数据

a:该层后面一层的激活函数中负的斜率(默认为ReLU,此时a=0)

mode:‘fan_in’ (default) 或者 ‘fan_out’. 使用fan_in保持weights的方差在前向传播中不变;使用fan_out保持weights的方差在反向传播中不变。

例如:

w = torch.Tensor(3, 5)

nn.init.kaiming_normal(w, mode=‘fan_out‘)

使用的例子(具体参见原始网址):

from torch.nn importinit

self.classifier= nn.Linear(self.stages[3], nlabels)

init.kaiming_normal(self.classifier.weight)for key inself.state_dict():if key.split(‘.‘)[-1] == ‘weight‘:if ‘conv‘ inkey:

init.kaiming_normal(self.state_dict()[key], mode=‘fan_out‘)if ‘bn‘ inkey:

self.state_dict()[key][...]= 1

elif key.split(‘.‘)[-1] == ‘bias‘:

self.state_dict()[key][...]= 0

3.实际使用中看到的初始化

3.1 ResNeXt,densenet中初始化

conv

n = kW* kH*nOutputPlane

weight:normal(0,math.sqrt(2/n))

bias:zero()

batchnorm

weight:fill(1)

bias:zero()

linear

bias:zero()

3.2 wide-residual-networks中初始化(MSRinit)

conv

n = kW* kH*nInputPlane

weight:normal(0,math.sqrt(2/n))

bias:zero()

linear

bias:zero()

相关文章:

  • 成功人物们的30岁都在做什么
  • 30岁时候的他们
  • 复频域求零输入响应_PostStack/PAL属性提取——一般属性和复地震道统计
  • 2007中国互联网市场走势浅析
  • python eureka服务发现_Eureka的细节(首页显示微服务名、外网访问显示正确ip、详情信息、服务发现)...
  • ubuntu 改屏幕分辨率命令_如何调整Ubuntu系统的分辨率和屏幕刷新率?
  • 一位销售的几年职业总结
  • data闭包 vue_vue中methods中的方法闭包缓存问题
  • 好用的视频转换切割软件
  • 中科罗伯特机器人吧_从汽车行业能预见工业机器人的未来吗
  • 找到一个新家,我要带着遗憾的泪水搬家了。
  • lamda 对比两个list_如何使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象(附代码)...
  • 论《Java替代C语言的可能性》
  • vue添加定位功能_Vue项目引用百度地图并实现搜索定位等功能
  • 通讯中的字节网络顺序和字节主机顺序
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • golang中接口赋值与方法集
  • JavaScript新鲜事·第5期
  • React+TypeScript入门
  • SpiderData 2019年2月16日 DApp数据排行榜
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 码农张的Bug人生 - 见面之礼
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 新手搭建网站的主要流程
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 做一名精致的JavaScripter 01:JavaScript简介
  • 2017年360最后一道编程题
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • #{}和${}的区别?
  • $.ajax中的eval及dataType
  • (2020)Java后端开发----(面试题和笔试题)
  • (6)添加vue-cookie
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (一)RocketMQ初步认识
  • (转)Google的Objective-C编码规范
  • (转)iOS字体
  • (转)jQuery 基础
  • (转)原始图像数据和PDF中的图像数据
  • (转载)Linux 多线程条件变量同步
  • .NET Core 中插件式开发实现
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .net专家(张羿专栏)
  • ?.的用法
  • @RequestParam,@RequestBody和@PathVariable 区别
  • []sim300 GPRS数据收发程序
  • [2021 蓝帽杯] One Pointer PHP
  • [2023-年度总结]凡是过往,皆为序章
  • [Angular] 笔记 7:模块