pytorch构建的网络是如何自动命名的?

pytorch 网络结构的命名问题

1.一般情况下是根据我们创建的类的self.XXX命名的。如:

 # Modules
self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3,
                                bias=False)                   

此时我们的网络层就会有一个: conv1.weight的命名

2.当我们使用了for循环来创建网络层时,torch的命名会按照index来命名。如:

self.layer1 = self._make_layer(block, 64, layers[0], stride=strides[0], dilation=dilations[0], BatchNorm=BatchNorm)

def _make_layer(self, block, planes, blocks, stride=1, dilation=1, BatchNorm=None)
	 layers = []
     for i in range(1, blocks):
            # if i == blocks-1:
            #     print(i)
            layers.append(block(self.inplanes, planes,  self.conv_counter,dilation=dilation, BatchNorm=BatchNorm,rate=rate,location=location))

此时的网络名会出现:
layer1.0.conv1.weight
layer1.0.conv2.weight
layer1.0.conv3.weight

3.当我们使用 nn.Sequential 来创建一个块的时候,块里面的层次命名也是使用index来的。如:

 self.downsample = nn.Sequential(
                nn.Conv2d(self.inplanes, planes * block.expansion,
                          kernel_size=1, stride=stride, bias=False),
                BatchNorm(planes * block.expansion),
            )

此时的命名就会出现:
downsample.0.weight #这里的0 指的是上面代码 Sequential中的nn.Conv2d
downsample.1.weight #这里的1 指的是上面代码 Sequential中的BatchNorm

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值