对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的一些用法分享
Oct 07 Python
urllib2自定义opener详解
Feb 07 Python
使用Protocol Buffers的C语言拓展提速Python程序的示例
Apr 16 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
Aug 28 Python
python类的继承实例详解
Mar 30 Python
python给微信好友定时推送消息的示例
Feb 20 Python
Django文件存储 默认存储系统解析
Aug 02 Python
在python中利用try..except来代替if..else的用法
Dec 19 Python
使用Puppeteer爬取微信文章的实现
Feb 11 Python
python圣诞树编写实例详解
Feb 13 Python
Java Unsafe类实现原理及测试代码
Sep 15 Python
python多线程和多进程关系详解
Dec 14 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 smarty 二级分类代码和模版循环例子
2011/06/16 PHP
CI框架装载器Loader.php源码分析
2014/11/04 PHP
php实现比较两个字符串日期大小的方法
2015/05/12 PHP
php使用curl模拟多线程实现批处理功能示例
2019/07/25 PHP
PHP生成随机字符串实例代码(字母+数字)
2019/09/11 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
Angularjs中使用layDate日期控件示例
2017/01/11 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
2017/11/28 Javascript
jquery判断滚动条距离顶部的距离方法
2018/09/05 jQuery
JS大坑之19位数的Number型精度丢失问题详解
2019/04/22 Javascript
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
Python+selenium实现自动循环扔QQ邮箱漂流瓶
2018/05/29 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
Python Tkinter 简单登录界面的实现
2019/06/14 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
使用tensorflow进行音乐类型的分类
2020/08/14 Python
利用python为PostgreSQL的表自动添加分区
2021/01/18 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
德国W家官网,可直邮中国的母婴商城:Windeln.de
2021/03/03 全球购物
教师辞职报告范文
2014/01/20 职场文书
入学生会自荐书范文
2014/02/05 职场文书
大学运动会入场词
2014/02/22 职场文书
《邮票齿孔的故事》教学反思
2014/02/22 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
面试通知短信
2015/04/20 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js