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引用(import)文件夹下的py文件的方法
Aug 26 Python
python 自动化将markdown文件转成html文件的方法
Sep 23 Python
在python中利用GDAL对tif文件进行读写的方法
Nov 29 Python
pyqt5移动鼠标显示坐标的方法
Jun 21 Python
Python如何调用JS文件中的函数
Aug 16 Python
python文件操作的简单方法总结
Nov 07 Python
Python图像处理库PIL中图像格式转换的实现
Feb 26 Python
Django之choices选项和富文本编辑器的使用详解
Apr 01 Python
python新手学习可变和不可变对象
Jun 11 Python
Python wordcloud库安装方法总结
Dec 31 Python
python 下划线的多种应用场景总结
May 12 Python
解决pytorch 损失函数中输入输出不匹配的问题
Jun 05 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具体实现代码
2010/10/12 PHP
php实现httpclient类示例
2014/04/08 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
PHP中的Iterator迭代对象属性详解
2019/04/12 PHP
js表数据排序 sort table data
2009/02/18 Javascript
JS完成代码前最好对其做5件事
2013/04/07 Javascript
jquery datatable后台封装数据示例代码
2014/08/07 Javascript
javascript定义变量时带var与不带var的区别分析
2015/01/12 Javascript
JavaScript数组去重的3种方法和代码实例
2015/07/01 Javascript
使用jquery获取url以及jquery获取url参数的实现方法
2016/05/25 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
2016/08/09 Javascript
利用浮层使select不可选的实现方法
2016/12/03 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
Bootstrap select实现下拉框多选效果
2016/12/23 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
Flask中获取小程序Request数据的两种方法
2017/05/12 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
在小程序中使用腾讯视频插件播放教程视频的方法
2018/07/10 Javascript
Python下rrdtool模块的基本使用方法
2015/11/13 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
python 实现简单的FTP程序
2019/12/27 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
韩国休闲女装品牌网站:ANAIS
2016/08/24 全球购物
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
自我评价正确写法范文
2013/12/10 职场文书
酒店销售主管岗位职责
2014/01/04 职场文书
岳父生日宴会答谢词
2014/01/13 职场文书
关于赌博的检讨书
2014/01/24 职场文书
户外亲子活动策划方案
2014/02/07 职场文书
新闻发布会活动策划方案
2014/09/15 职场文书
2014年党员学习“三严三实”思想汇报
2014/09/15 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
涨价通知怎么写
2015/04/23 职场文书