卷积神经网络(Convolutional Neural Networks,CNN) 网络的组件:卷积层,池化层,激活层和全连接层。
CNN主要由以下层构造而成:
- 卷积层:Convolutional layer(CONV)
- 池化层:Pooling layer (POOL)
- 激活层:Activation Layer
- 全连接层:Fully Connected layer(FC)
卷积层:Convolutional layer(CONV):
常用的卷积(Conv2d)在pytorch中对应的函数是:
torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', device=None, dtype=None)
- in_channels (int) – 参数代表输入特征矩阵的深度即channel,比如输入一张RGB彩色图像,那in_channels=3
- out_channels (int) – 参数代表卷积核的个数,使用n个卷积核输出的特征矩阵深度即channel就是n
- kernel_size (int or tuple) – 参数代表卷积核的尺寸,输入可以是int类型如3 代表卷积核的height=width=3,也可以是tuple类型如(5, 3)代表卷积核的height=5,width=3
- stride (int or tuple, optional) – 参数代表卷积核的步距默认为1,和kernel_size一样输入可以是int类型,也可以是tuple类型
- padding (int, tuple or str, optional) – 参数代表在输入特征矩阵四周补零的情况默认为0,同样输入可以为int型如1 代表上下左右补一圈0,如果输入为tuple型如(2, 1) 代表在上方补两行下方补两行,左边补一列,右边补一列。padding[0]是在H高度方向两侧填充的,padding[1]是在W宽度方向两侧填充的。如果要实现更灵活的padding方式,可使用nn.ZeroPad2d方法。
- dilation (int or tuple, optional)– 空洞卷积,参数代表kernel内的点(卷积核点)的间距,默认为1,取值方式类似padding。
- bias (bool, optional) – 参数表示是否使用偏置(默认使用)
- groups (int, optional) – 分组卷积的组数,能减少参数和正则化效果。默认为1,也即都在1个组内。
实际应用中,dilation相对较少,因此特征图的边长公式一般可以简化如下: