文章目錄
參考:https://blog.csdn.net/oldmao_2001/article/details/102844727
Convolution layers 卷積層
關於各種卷積的動圖演示:https://github.com/vdumoulin/conv_arithmetic
API 結構:
nn.Conv2d 卷積
nn.Conv2d()
功能:對多個二維信號進行二維卷積
主要參數:
- in_channels:輸入通道數
- out_channels:輸出通道數,等價於卷積核個數
- kernel_size:卷積核尺寸
- stride:步長
- padding:填充個數
- dilation:空洞卷積大小
- groups:分組卷積設置
- bias:偏置
這裏介紹一下空洞卷積(Dilated Convolution)。
空洞卷積的作用:是擴大 kernel 的感受野。
問題:一個RGB的圖片轉化爲三維的張量後做卷積爲什麼不是三維卷積而是二維卷積呢?
因爲 RGB 三個通道每個通道都是單獨的一個卷積核進行操作,每個卷積核在 X、Y 兩個維度上滑動,所以是二維卷積。三個卷積核得到的結果相加然後加上 bias,得到輸出的一個結果。
nn.ConvTranspose 轉置卷積
轉置卷積又稱爲反捲積 (這個名字一般不用,避免和信號處理裏面的反捲積重複)(Deconvolution)和部分跨越卷積(Fractionally strided Convolution),用於對圖像進行上採樣(UpSample)
爲什麼稱爲轉置卷積?如圖:
注:藍色部分是 Input,青色部分是 Output。
Pooling Layer 池化層
池化運算:對信號進行“收集”並“總結”,類似水池收集水資源,因而得名池化層
收集:多變少
總結:取最大值或平均值
nn.MaxPool2d
功能:對二維信號(圖像)進行最大值池化
主要參數:
- kernel_size:池化核尺寸
- stride:步長(通常與kernel_size一樣大,就是不重疊)
- padding:填充個數
- dilation:池化核間隔大小
- ceil_mode:尺寸向上取整
- return_indices:記錄池化像素索引(通常是在最大值反池化上採樣時使用,)
nn.AvgPool2d
功能:對二維信號(圖像)進行平均值池化
主要參數:
- kernel_size:池化核尺寸
- stride:步長
- padding:填充個數
- ceil_mode:尺寸向上取整
- count_include_pad:填充值用於計算
- divisor override:除法因子(設置後不再除以池化核尺寸大小,而是除法因子)
nn.MaxUnpool2d
功能:對二維信號(圖像)進行最大值池化上採樣
主要參數:
- kernel_size:池化核尺寸
- stride:步長
- padding:填充個數
上採樣要記錄最大值的索引,所以在forward的時候需要傳入index參數。
Linear Layer 線性層
線性層又稱全連接層,其每個神經元與上一層所有神經元相連實現對前一層的線性組合,線性變換。
nn.Linear
Activation Layer 激活函數層
這部分推薦看官方 Documentation,有圖有公式。