对pytorch网络层结构的数组化详解


Posted in Python onDecember 08, 2018

最近再写openpose,它的网络结构是多阶段的网络,所以写网络的时候很想用列表的方式,但是直接使用列表不能将网络中相应的部分放入到cuda中去。

其实这个问题很简单的,使用moduleList就好了。

1 我先是定义了一个函数,用来根据超参数,建立一个基础网络结构

stage = [[3, 3, 3, 1, 1], [7, 7, 7, 7, 7, 1, 1]]
branches_cfg = [[[128, 128, 128, 512, 38], [128, 128, 128, 512, 19]],
    [[128, 128, 128, 128, 128, 128, 38], [128, 128, 128, 128, 128, 128, 19]]]

# used for add two branches as well as adapt to certain stage
def add_extra(i, branches_cfg, stage):
 """
 only add CNN of brancdes S & L in stage Ti at the end of net
 :param in_channels:the input channels & out
 :param stage: size of filter
 :param branches_cfg: channels of image
 :return:list of layers
 """
 in_channels = i
 layers = []
 for k in range(len(stage)):
  padding = stage[k] // 2
  conv2d = nn.Conv2d(in_channels, branches_cfg[k], kernel_size=stage[k], padding=padding)
  layers += [conv2d, nn.ReLU(inplace=True)]
  in_channels = branches_cfg[k]
 return layers

2 然后用普通列表装载他们

conf_bra_list = []
paf_bra_list = []

# param for branch network
in_channels = 128

for i in range(all_stage):
 if i > 0:
  branches = branches_cfg[1]
  conv_sz = stage[1]
 else:
  branches = branches_cfg[0]
  conv_sz = stage[0]

 conf_bra_list.append(nn.Sequential(*add_extra(in_channels, branches[0], conv_sz)))
 paf_bra_list.append(nn.Sequential(*add_extra(in_channels, branches[1], conv_sz)))
 in_channels = 185

3 再然后,使用moduleList方法,把普通列表专成pytorch下的模块

# to list
self.conf_bra = nn.ModuleList(conf_bra_list)
self.paf_bra = nn.ModuleList(paf_bra_list)

4 最后,调用就好了

out_0 = x
# the base transform
for k in range(len(self.vgg)):
 out_0 = self.vgg[k](out_0)

# local name space
name = locals()
confs = []
pafs = []
outs = []

length = len(self.conf_bra)
for i in range(length):
 name['conf_%s' % (i + 1)] = self.conf_bra[i](name['out_%s' % i])
 name['paf_%s' % (i + 1)] = self.paf_bra[i](name['out_%s' % i])
 name['out_%s' % (i + 1)] = torch.cat([name['conf_%s' % (i + 1)], name['paf_%s' % (i + 1)], out_0], 1)
 confs.append('conf_%s' % (i + 1))
 pafs.append('paf_%s' % (i + 1))
 outs.append('out_%s' % (i + 1))

5 顺便装了一下,使用了python局部变量命名空间,name = locals(),其实完全使用普通列表保存变量就好了,高兴就好。

以上这篇对pytorch网络层结构的数组化详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python二叉树的实现实例
Nov 21 Python
15行Python代码带你轻松理解令牌桶算法
Mar 21 Python
pandas去除重复列的实现方法
Jan 29 Python
python三方库之requests的快速上手
Mar 04 Python
django页面跳转问题及注意事项
Jul 18 Python
python列表每个元素同增同减和列表元素去空格的实例
Jul 20 Python
flask的orm框架SQLAlchemy查询实现解析
Dec 12 Python
Python版中国省市经纬度
Feb 11 Python
Keras设置以及获取权重的实现
Jun 19 Python
解决Keras中CNN输入维度报错问题
Jun 29 Python
浅析Python 抽象工厂模式的优缺点
Jul 13 Python
python常量折叠基础知识点讲解
Feb 28 Python
pytorch对可变长度序列的处理方法详解
Dec 08 #Python
pytorch 转换矩阵的维数位置方法
Dec 08 #Python
pytorch 调整某一维度数据顺序的方法
Dec 08 #Python
Python操作mongodb数据库的方法详解
Dec 08 #Python
Opencv+Python 色彩通道拆分及合并的示例
Dec 08 #Python
python-opencv颜色提取分割方法
Dec 08 #Python
使用python将图片按标签分入不同文件夹的方法
Dec 08 #Python
You might like
PHP iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
解析smarty 截取字符串函数 truncate的用法介绍
2013/06/20 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
2014/06/19 PHP
php实现网站文件批量压缩下载功能
2015/10/28 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
在laravel中实现将查询的对象转换为多维数组的函数
2019/10/21 PHP
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
图像替换新技术 状态域方法
2010/01/28 Javascript
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
js 页面元素的几个用法总结
2013/11/18 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
基于slideout.js实现移动端侧边栏滑动特效
2016/11/28 Javascript
JS实现标签页切换效果
2017/05/04 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
详解如何实现一个简单的Node.js脚手架
2017/12/04 Javascript
vuejs简单验证码功能完整示例
2019/01/08 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
python实现定制交互式命令行的方法
2014/07/03 Python
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
python清除指定目录内所有文件中script的方法
2015/06/30 Python
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
Nisbets法国:英国最大的厨房和餐饮设备供应商
2019/03/18 全球购物
中式面点餐厅创业计划书
2014/01/29 职场文书
经管应届生求职信范文
2014/05/18 职场文书
社区维稳工作方案
2014/06/06 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
九九重阳节标语
2014/10/07 职场文书
2014年团队工作总结
2014/11/24 职场文书
入党政审材料范文
2014/12/24 职场文书
工商行政处罚决定书
2015/06/24 职场文书
毕业欢送会致辞
2015/07/29 职场文书
课程设计感想范文
2015/08/11 职场文书
高考百日冲刺决心书
2015/09/23 职场文书