Convolutional Layer
Make a convolutional module:
class torch.nn.Conv2d(in_channels, out_channels, kernel_size,
stride=1, padding=0, dilation=1, groups=1, bias=True)
# 前三个参数必填
mod = nn.Conv2d( 2 , 5 , kernel_size=3, padding=1 )
inputs: 2 channels — every channel is a feature map, 灰度图片只有一个feature map;彩色图片一般3个feature map(RGB)
output: 5 activation maps — 5个激活映射,每个filter都会产生一个,所以有5个filters
filters are 3x3, padding with one layer of zero to not shrink anything
PW和DW卷积配合使用是因为,在经过DW卷积后,不同的通道之间的空间位置信息不能利用,所在再经过PW卷积进行深度融合就可以将其通道信息利用,从而组成了深度可分离卷积。
Receptive Field
感受野(Receptive Field)的定义是卷积神经网络每一层输出的特征图(feature map)上的像素点在输入图片上映射的区域大小。再通俗点的解释是,特征图上的一个点对应输入图上的区域,如图。
两个3*3卷积层的串联相当于1个5*5的卷积层,3个3*3的卷积层串联相当于1个7*7的卷积层,即3个3*3卷积层的感受野大小相当于1个7*7的卷积层。但是3个3*3的卷积层参数量只有7*7的一半左右,同时前者可以有3个非线性操作,而后者只有1个非线性操作,这样使得前者对于特征的学习能力更强。
Effective Receptive Field
有效感受野(effective receptive field, ERF),在卷积计算时,实际有效的感受野区域。在F0特征层中,特征点6可以描述其他所有特征点的部分信息,即图中交叠部分,特征点6代表的信息更“有效”。即越靠近感受野中心的区域越有效。在网络训练时,有效感受野对参数的影响更大。
一般而言,特征点有效感受野要小于实际感受野。其有效性,类高斯分布向边缘递减,且不同的激活函数对有效感受野影响不同
Pooling Layer
Make a pooling module
inputs: activation maps of size n x n
output: activation maps of size n/p x n/p
p: pooling size, in this case p == 2
mod = nn.MaxPool2d(2,2) # max pooling
# block 1: 3 x 32 x 32 --> 64 x 16 x 16
self.conv1a = nn.Conv2d(3, 64, kernel_size=3, padding=1 )
self.conv1b = nn.Conv2d(64, 64, kernel_size=3, padding=1 )
self.pool1 = nn.MaxPool2d(2,2)