pytorch 共享参数的示例


Posted in Python onAugust 17, 2019

在很多神经网络中,往往会出现多个层共享一个权重的情况,pytorch可以快速地处理权重共享问题。

例子1:

class ConvNet(nn.Module):
  def __init__(self):
    super(ConvNet, self).__init__()
    self.conv_weight = nn.Parameter(torch.randn(3, 3, 5, 5))
 
  def forward(self, x):
    x = nn.functional.conv2d(x, self.conv_weight, bias=None, stride=1, padding=2, dilation=1, groups=1)
    x = nn.functional.conv2d(x, self.conv_weight.transpose(2, 3).contiguous(), bias=None, stride=1, padding=0, dilation=1,
                 groups=1)
    return x

上边这段程序定义了两个卷积层,这两个卷积层共享一个权重conv_weight,第一个卷积层的权重是conv_weight本身,第二个卷积层是conv_weight的转置。注意在gpu上运行时,transpose()后边必须加上.contiguous()使转置操作连续化,否则会报错。

例子2:

class LinearNet(nn.Module):
  def __init__(self):
    super(LinearNet, self).__init__()
    self.linear_weight = nn.Parameter(torch.randn(3, 3))
 
  def forward(self, x):
    x = nn.functional.linear(x, self.linear_weight)
    x = nn.functional.linear(x, self.linear_weight.t())
 
    return x

这个网络实现了一个双层感知器,权重同样是一个parameter的本身及其转置。

例子3:

class LinearNet2(nn.Module):
  def __init__(self):
    super(LinearNet2, self).__init__()
    self.w = nn.Parameter(torch.FloatTensor([[1.1,0,0], [0,1,0], [0,0,1]]))
 
  def forward(self, x):
    x = x.mm(self.w)
    x = x.mm(self.w.t())
    return x

这个方法直接用mm函数将x与w相乘,与上边的网络效果相同。

以上这篇pytorch 共享参数的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python统计文件中去重后uuid个数的方法
Jul 30 Python
使用requests库制作Python爬虫
Mar 25 Python
python实现list由于numpy array的转换
Apr 04 Python
python中ASCII码字符与int之间的转换方法
Jul 09 Python
Python3 SSH远程连接服务器的方法示例
Dec 29 Python
pandas中DataFrame修改index、columns名的方法示例
Aug 02 Python
python3 字符串知识点学习笔记
Feb 08 Python
python 读取.nii格式图像实例
Jul 01 Python
Python Selenium异常处理的实例分析
Feb 28 Python
用Python将库打包发布到pypi
Apr 13 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
May 27 Python
仅用几行Python代码就能复制她的U盘文件?
Jun 26 Python
Pytorch卷积层手动初始化权值的实例
Aug 17 #Python
pytorch自定义初始化权重的方法
Aug 17 #Python
在Pytorch中使用样本权重(sample_weight)的正确方法
Aug 17 #Python
获取Pytorch中间某一层权重或者特征的例子
Aug 17 #Python
pyenv与virtualenv安装实现python多版本多项目管理
Aug 17 #Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
Aug 17 #Python
关于PyTorch源码解读之torchvision.models
Aug 17 #Python
You might like
php 在线打包_支持子目录
2008/06/28 PHP
php递归实现无限分类生成下拉列表的函数
2010/08/08 PHP
解析php时间戳与日期的转换
2013/06/06 PHP
关于使用coreseek并为其做分页的介绍
2013/06/21 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
2016/11/05 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
斜45度寻路实现函数
2009/08/20 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
用jQuery实现优酷首页轮播图
2017/01/09 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
2017/01/22 Javascript
vue-cli 使用axios的操作方法及整合axios的多种方法
2018/09/12 Javascript
javascript中undefined的本质解析
2019/07/31 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
python时间time模块处理大全
2020/10/25 Python
CSS3实现王者荣耀匹配人员加载页面的方法
2019/04/16 HTML / CSS
美国网上眼镜商城:Zenni Optical
2016/11/20 全球购物
英国门把手公司:Door Handle Company
2019/05/12 全球购物
伦敦最受欢迎的蛋糕店:Konditor & Cook
2019/11/01 全球购物
EJB的激活机制
2013/10/25 面试题
成人继续教育实施方案
2014/03/01 职场文书
买卖车协议书
2014/04/21 职场文书
关于清明节的演讲稿
2014/09/13 职场文书
文言文辞职信
2015/02/28 职场文书
2015年司法局工作总结
2015/05/22 职场文书
投诉书格式范本
2015/07/02 职场文书
英语投诉信范文
2015/07/03 职场文书
朋友离别感言
2015/08/04 职场文书
2016年教师节特级教师获奖感言
2015/12/09 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
分享几个JavaScript运算符的使用技巧
2021/04/24 Javascript
HTML+CSS 实现顶部导航栏菜单制作
2021/06/03 HTML / CSS
JavaCV实现照片马赛克效果
2022/01/22 Java/Android
MyBatis核心源码深度剖析SQL语句执行过程
2022/05/20 Java/Android