在何大佬的文章中,提出了下面两种残差块:
左边的称为building block,右边的称为bottleneck building block。
-
左边的输入和输出都是64个channel的,四四方方的,像个建筑物; -
右边的就好像通过了一个瓶颈一样,输入残差块的网络通道数会先从256变成64,然后最终再升到256,其中降维和升维使用的是1x1的卷积,可以减少参数量;
代码
Building Block,就是之前写的(换了激活函数):
class ResidualBlock(nn.Module):
def __init__(self, in_channels):
super(ResidualBlock, self).__init__()
self.conv1 = nn.Conv2d(in_channels, in_channels, kernel_size=3, padding=1)
self.bn1 = nn.BatchNorm2d(in_