智能数字图像处理:ResNet代码(pytorch)之model.py解读

涉及到迁移学习:

 

 1.self.conv1 = nn.Conv2d(in_channels=in_channel, out_channels=out_channel, kernel_size=3, stride=stride, padding=1, bias=False)-》第一层输入通道数和输出通道数由调用函数传参决定。

2.self.bn1 = nn.BatchNorm2d(out_channel)-》卷积层之后总会添加BatchNorm2d进行数据的归一化处理,这使得数据在进行Relu之前不会因为数据过大而导致网络性能的不稳定。

3.self.relu = nn.ReLU()-》进行一次激活。

4.self.conv2 = nn.Conv2d(in_channels=out_channel, out_channels=out_channel,kernel_size=3, stride=1, padding=1, bias=False)-》再进行一次卷积,stride=1则不改变输入 图像的大小。

5.self.bn2 = nn.BatchNorm2d(out_channel)-》归一化。

6. self.downsample = downsample-》定义下采样方法,默认为None。

前向传播模块:

1.if self.downsample is not None:
            identity = self.downsample(x)-》》判断下采样不是None则对输入矩阵进行下采样。

2.然后进行卷积正则化Relu激活卷积正则化->输出加上下采样输出求和作为下一层Relu激活函数输入。作用:防止梯度消失。使网络可以变得更深。

        out = self.conv1(x)
        out = self.bn1(out)
        out = self.relu(out)

        out = self.conv2(out)
        out = self.bn2(out)

        out += identity
        out = self.relu(out)

3.最后return out输出参差网络的处理结果。

接下来定义50层、101层和152层的参差结构:

输入56x56x256

1.self.conv1 = nn.Conv2d(in_channels=in_channel, out_channels=out_channel,
                               kernel_size=1, stride=1, bias=False)  # squeeze channels
        self.bn1 = nn.BatchNorm2d(out_channel)->卷积层一和第一层正则化和原来一样。卷积核数量是128,输出56x56x128。深度缩小一半。

2.self.conv2 = nn.Conv2d(in_channels=out_channel, out_channels=out_channel,
                               kernel_size=3, stride=stride, bias=False, padding=1)
        self.bn2 = nn.BatchNorm2d(out_channel)-》卷积层二kernel_size=3则处理后的图像长宽缩小一半。卷积核数量是128,输出28x28x128。长宽缩小一半。

3.self.conv3 = nn.Conv2d(in_channels=out_channel, out_channels=out_channel*self.expansion,
                               kernel_size=1, stride=1, bias=False)  # unsqueeze channels
        self.bn3 = nn.BatchNorm2d(out_channel*self.expansion)->卷积层三卷积核大小1x1不改变图像大小,但卷积核数量变成4倍。作用是增加图像的深度。卷积核数量是128x4=512,输出28x28x512。深度增加4倍。

4.        self.relu = nn.ReLU(inplace=True)
        self.downsample = downsample-》还是Relu激活和下采样配置。

定义50层、101层和152层的参差结构的正向传播过程:

与上文正向传播过程一样。

定义ResNet整个网络框架:

class ResNet(nn.Module):

    de
  • 9
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值