国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

對pytorch網絡層結構的數組化詳解

2020-02-16 00:00:52
字體:
來源:轉載
供稿:網友

最近再寫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 stagedef 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 networkin_channels = 128for 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 listself.conf_bra = nn.ModuleList(conf_bra_list)self.paf_bra = nn.ModuleList(paf_bra_list)

4 最后,調用就好了

out_0 = x# the base transformfor k in range(len(self.vgg)): out_0 = self.vgg[k](out_0)# local name spacename = 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網絡層結構的數組化詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巫山县| 察雅县| 沂源县| 博白县| 和田市| 汽车| 奎屯市| 福海县| 阜新| 卢氏县| 合作市| 东乌珠穆沁旗| 伊金霍洛旗| 西贡区| 兰州市| 中方县| 利辛县| 汽车| 千阳县| 万安县| 亳州市| 青川县| 怀远县| 项城市| 南汇区| 斗六市| 睢宁县| 云浮市| 正宁县| 博野县| 延寿县| 诸暨市| 浑源县| 淮安市| 沅陵县| 绥阳县| 南昌县| 余干县| 碌曲县| 禄丰县| 喀喇|