对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循环监控远程端口的方法
Mar 14 Python
Python脚本文件打包成可执行文件的方法
Jun 02 Python
Python减少循环层次和缩进的技巧分析
Mar 15 Python
Python MD5加密实例详解
Aug 02 Python
Python绘制正余弦函数图像的方法
Aug 28 Python
python将字符串转变成dict格式的实现
Nov 18 Python
python标识符命名规范原理解析
Jan 10 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
Feb 07 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
Mar 05 Python
pyecharts动态轨迹图的实现示例
Apr 17 Python
python编写一个会算账的脚本的示例代码
Jun 02 Python
python中pivot()函数基础知识点
Jan 03 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时间戳与日期的转换
2013/06/06 PHP
php生成动态验证码gif图片
2015/10/19 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
使用javascript实现ListBox左右全选,单选,多选,全请
2013/11/07 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
浅谈JS之iframe中的窗口
2016/09/13 Javascript
AngularJS学习第二篇 AngularJS依赖注入
2017/02/13 Javascript
angularJS深拷贝详解
2017/03/23 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
详解vue-admin和后端(flask)分离结合的例子
2018/02/12 Javascript
es6新特性之 class 基本用法解析
2018/05/05 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
2018/07/23 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
js基础之事件捕获与冒泡原理
2019/10/09 Javascript
实例讲解JavaScript 计时事件
2020/07/04 Javascript
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
利用django+wechat-python-sdk 创建微信服务器接入的方法
2019/02/20 Python
使用python进行广告点击率的预测的实现
2019/07/04 Python
Python求区间正整数内所有素数之和的方法实例
2020/10/13 Python
canvas绘制太极图的实现示例
2020/04/29 HTML / CSS
德国低价购买灯具和家具网站:Style-home.de
2016/11/25 全球购物
French Connection官网:女装、男装及家居用品
2019/03/18 全球购物
植村秀美国官网:Shu Uemura美国
2019/03/19 全球购物
安全大检查实施方案
2014/02/22 职场文书
购房意向书
2014/04/01 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
网络营销计划书
2015/01/17 职场文书
工商局个人工作总结
2015/03/03 职场文书
2015年依法行政工作总结
2015/04/29 职场文书
员工加薪申请报告
2015/05/15 职场文书
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers
js判断两个数组相等的5种方法
2022/05/06 Javascript