对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在多玩图片上下载妹子图的实现代码
Aug 13 Python
python创建和使用字典实例详解
Nov 01 Python
python共享引用(多个变量引用)示例代码
Dec 04 Python
Python2.x和3.x下maketrans与translate函数使用上的不同
Apr 13 Python
深入理解Python中命名空间的查找规则LEGB
Aug 06 Python
一步步解析Python斗牛游戏的概率
Feb 12 Python
78行Python代码实现现微信撤回消息功能
Jul 26 Python
在Python中输入一个以空格为间隔的数组方法
Nov 13 Python
Python dict的常用方法示例代码
Jun 23 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
Jul 14 Python
Python Pandas数据分析工具用法实例
Nov 05 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
Jan 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中批量修改文件后缀名的函数代码
2011/10/23 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
2011/12/28 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
node.js适合游戏后台开发吗?
2014/09/03 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
2016/02/16 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
JavaScript事件详细讲解
2016/06/27 Javascript
Angular.Js的自动化测试详解
2016/12/09 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
jQuery实现拖动剪裁图片作为头像
2016/12/28 Javascript
深入浅析var,let,const的异同点
2018/08/07 Javascript
[01:01:04]2018DOTA2亚洲邀请赛 4.5 淘汰赛 OpTic vs TNC 第一场
2018/04/06 DOTA
Python中使用装饰器和元编程实现结构体类实例
2015/01/28 Python
python中 chr unichr ord函数的实例详解
2017/08/06 Python
在dataframe两列日期相减并且得到具体的月数实例
2018/07/03 Python
Flask-Mail用法实例分析
2018/07/21 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
Python任意字符串转16, 32, 64进制的方法
2019/06/12 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
python numpy 矩阵堆叠实例
2020/01/17 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
Python中使用threading.Event协调线程的运行详解
2020/05/02 Python
基于plt.title无法显示中文的快速解决
2020/05/16 Python
Python如何急速下载第三方库详解
2020/11/02 Python
英国演唱会订票网站:Ticket Selection
2018/03/27 全球购物
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
戛纳奢侈品商店:Jacques Loup法国
2019/11/04 全球购物
数学与统计学院学生个人职业生涯规划书
2014/02/10 职场文书
校庆活动策划方案
2014/06/05 职场文书
个人委托书范本汇总
2014/10/01 职场文书
2016小学教师读书心得体会
2016/01/13 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
Python初识逻辑与if语句及用法大全
2021/08/07 Python