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使用7z解压软件备份文件脚本分享
Feb 21 Python
Python列表list数组array用法实例解析
Oct 28 Python
python PIL模块与随机生成中文验证码
Feb 27 Python
python实现用户答题功能
Jan 17 Python
Python爬豆瓣电影实例
Feb 23 Python
Python实现基于socket的udp传输与接收功能详解
Nov 15 Python
python实现密度聚类(模板代码+sklearn代码)
Apr 27 Python
django的autoreload机制实现
Jun 03 Python
用python实现前向分词最大匹配算法的示例代码
Aug 06 Python
python 通过exifread读取照片信息
Dec 24 Python
Python爬虫之爬取最新更新的小说网站
May 06 Python
python编写五子棋游戏
May 25 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
中国收音机工业发展史
2021/03/02 无线电
基于PHP Web开发MVC框架的Smarty使用说明
2013/04/19 PHP
php阻止页面后退的方法分享
2014/02/17 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
Laravel 5 框架入门(一)
2015/04/09 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
jQuery结合AJAX之在页面滚动时从服务器加载数据
2015/06/30 Javascript
基于jQuery Ajax实现上传文件
2016/03/24 Javascript
详解Javascript获取缓存和清除缓存API
2017/05/25 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
2017/07/04 Javascript
vue中实现在外部调用methods的方法(推荐)
2018/02/08 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
JavaScript多种页面刷新方法小结
2019/04/04 Javascript
ES6 Iterator遍历器原理,应用场景及相关常用知识拓展详解
2020/02/15 Javascript
在vant中使用时间选择器和popup弹出层的操作
2020/11/04 Javascript
微信小程序实现加入购物车滑动轨迹
2020/11/18 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
python实现电子词典
2020/04/23 Python
Python的内存泄漏及gc模块的使用分析
2014/07/16 Python
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
python制作企业邮箱的爆破脚本
2016/10/05 Python
详解appium+python 启动一个app步骤
2017/12/20 Python
PyQT5 QTableView显示绑定数据的实例详解
2019/06/25 Python
Python用来做Web开发的优势有哪些
2020/08/05 Python
Python+unittest+requests+excel实现接口自动化测试框架
2020/12/23 Python
世界顶级户外运动品牌折扣网站:LeftLane Sports
2019/06/12 全球购物
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
工程业务员工作职责
2013/12/07 职场文书
建筑设计学生的自我评价
2014/01/16 职场文书
关于母亲节的感言
2014/02/04 职场文书
主题婚礼策划方案
2014/02/10 职场文书
结婚喜宴主持词
2014/03/14 职场文书
2014年财政所工作总结
2014/11/22 职场文书
考试作弊检讨书怎么写?
2014/12/21 职场文书
Tomcat 与 maven 的安装与使用教程
2022/06/16 Servers