RDV代码笔记-network.py部分(持续更新)

<1> increase_resolution()函数中修改resnet18步长的问题:

    def increase_resolution(self):
        """论文第6页提到:为了更精确的定位,ResNet的最后两个块的步长被降低到一个像素,提供更高的输出分辨率。"""
        global OUT_HEIGHT, OUT_WIDTH
        # 为什么传入的是一个tuple(1,1)
        # 对于Conv2d()中的stride而言,传入int类型的1意为在h和w两个维度上的步长都为1
        # 传入tuple类型的(2,1)意为在h维度上的步长为2,w维度上的步长为1
        self.basemodel.layer3[0].conv1.stride = (1,1)
        self.basemodel.layer3[0].downsample[0].stride=(1,1)  
        self.basemodel.layer4[0].conv1.stride = (1,1)
        self.basemodel.layer4[0].downsample[0].stride=(1,1)
        OUT_HEIGHT *= 4
        OUT_WIDTH  *= 4
        # 打印结果应当为:32×56
        print("using high resolution output ({}x{})".format(OUT_HEIGHT,OUT_WIDTH))

<2>warnings库

import warnings
warnings.warn('Something you want to say.')

<3>卷积输出特征图算出来是小数

        输入图像为224×224×3,送入3×3卷积层,padding=1,stride=2,按照计算公式可以发现输出特征图的高和宽都不是整数,这种情况下,我们对商进行上下取整,即输出特征图的尺寸为112×112。这种思路其实就是当卷积核在特征图上滑动时,若滑动覆盖区域(即感受野)不全位于特征图内时,不再进行卷积操作。

<4>nn.Module中parameters()方法和named_parameters()方法

        前者返回的仅仅是一个参数迭代器;后者返回的是一个tuple,既包含网络层的名称也包含网络层参数迭代器。parameter()返回的其实是named_parameters()返回的一部分,即仅仅是参数迭代器部分。

import torchvision.models as models
model = models.resnet18().cuda()
for param in model.named_parameters():
    print(type(param))
    print(type(param[0]))
    print(type(param[1]))
    print('-'*20)

# 运行结果
# <class tuple>
# <class 'str'>
# <class 'torch.nn.parameter.Parameter'>

        个人理解是,model.named_parameters()返回的是一个大元组,里面包含很多小元组,param每次遍历的就是每个小元组,即((name1,para1), (name2,para2), (name3,para3),.......)。

        这里有一篇不错的博文:named_parameters()、parameters()、state_dict()区别

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Taylor不想被展开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值