每天五分钟深度学习pytorch:基于Pytorch搭建ResNet模型的残差块
残差块
我们分析一下这个残差块,x经过两个卷积层得到F(x),然后F(x)+x作为残差块的输出,此时就有一个问题,这个问题就是F(x)+x的维度问题,如果图片数据经过两个卷积层之后F(x)变小(height和weight变小)或者通道数发生了变化,那么此时F(x)是没有办法和x相加的,当然我们可以学习前面的GoogLeNet的方式,也就是说卷积之后的F(x)和x一样,大小不变,或者对x变道和F(x)一样的维度,这里我们对x进行卷积操作,下面我们将实现这两种方式,通过代码应该会有一种清晰的认识。
代码
定义卷积层:
def conv3x3(in_channel, out_channel, stride=1):
return nn.Conv2d(in_channel, out_channel, 3, stride=stride, padding=1, bias=False)
定义残差块: