卷积神经网络中可以让特征图尺寸减半/不变的常用卷积结构

Pytorch中函数torch.nn.Conv2d的参数解释

其中,参数groups很有意思,字面上理解是将参数分组,它可以在保持输出通道数不变的情况下,将参数重复利用。
在实际实验中,同样的网络结构下,这种分组的卷积效果是好于未分组的卷积的效果的。
卷积神经网络中可以让特征图尺寸减半/不变的常用卷积结构

计算过程
卷积神经网络中可以让特征图尺寸减半/不变的常用卷积结构

特征图尺寸减半

参考DenseNet、ResNet中常见的一些结构, bottleneck之前对输入数据的处理

#1.
Conv2d(kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)
#2.
MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)

关于池化层让特征图减半的trick,设置s=2,p=(k-1)/2即可

特征图尺寸不变

参考DenseNet中bottleneck的卷积结构,最常使用1*1卷积

#1.
Conv2d(kernel_size=(1, 1), stride=(1, 1), bias=False)   # k = 1,  s = 1,  p = 0
#2.
Conv2d(kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)  # k = 3, s = 1, p = 1

参考
1. nn.Conv2d和其中的padding策略
2. 关于pytorch中nn.conv中的参数group
3. pytorch演示卷积和反卷积运算