对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的常见命令注入威胁
Feb 18 Python
python之yield表达式学习
Sep 02 Python
关于你不想知道的所有Python3 unicode特性
Nov 28 Python
Python查找相似单词的方法
Mar 05 Python
mac下pycharm设置python版本的图文教程
Jun 13 Python
Python实用技巧之利用元组代替字典并为元组元素命名
Jul 11 Python
Python何时应该使用Lambda函数
Jul 02 Python
python按修改时间顺序排列文件的实例代码
Jul 25 Python
基于python的docx模块处理word和WPS的docx格式文件方式
Feb 13 Python
学习Python需要哪些工具
Sep 04 Python
Python 高效编程技巧分享
Sep 10 Python
自动在Windows中运行Python脚本并定时触发功能实现
Sep 04 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实现变色验证码实例
2014/01/06 PHP
PHP完全二叉树定义与实现方法示例
2017/10/09 PHP
PHP设计模式概论【概念、分类、原则等】
2020/05/01 PHP
jquery 学习之二 属性相关
2010/11/23 Javascript
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
关于query Javascript CSS Selector engine
2013/04/12 Javascript
js原型继承的两种方法对比介绍
2014/03/30 Javascript
js动态创建标签示例代码
2014/06/09 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
2015/12/10 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
js微信扫描二维码登录网站技术原理
2016/12/01 Javascript
Node.js中.pfx后缀文件的处理方法
2017/03/10 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
如何使用Python的Requests包实现模拟登陆
2018/04/27 Python
python 串口读取+存储+输出处理实例
2019/12/26 Python
pytorch实现从本地加载 .pth 格式模型
2020/02/14 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
python 利用toapi库自动生成api
2020/10/19 Python
分享一个python的aes加密代码
2020/12/22 Python
CSS3 box-sizing属性
2009/04/17 HTML / CSS
你不知道的5个HTML5新功能
2016/06/28 HTML / CSS
Coggles美国/加拿大:高级国际时装零售商
2018/10/23 全球购物
马来西亚最热门的在线时尚商店:FashionValet
2018/11/11 全球购物
法国一家多品牌成衣精品中/高档商店:Graduate Store
2019/08/28 全球购物
Delphi工程师笔试题
2013/09/21 面试题
国际贸易个人求职信范文
2014/01/04 职场文书
巡警年度自我鉴定
2014/02/21 职场文书
大三学习计划书范文
2014/05/02 职场文书
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python