卷積神經網絡(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相對較少,因此特征圖的邊長公式一般可以簡化如下: