1. 通道數問題
- 描述一個像素點,如果是灰度,那么只需要一個數值來描述它,就是單通道。如果有RGB三種顏色來描述它,就是三通道。最初輸入的圖片樣本的
channels
,取決于圖片類型; - 卷積操作完成后輸出的
out_channels
,取決于卷積核的數量。此時的out_channels
也會作為下一次卷積時的卷積核的in_channels
; - 卷積核中的
in_channels
,上面已經說了,就是上一次卷積的out_channels
,如果是第一次做卷積,就是樣本圖片的channels
。
舉個例子,假設現有一個為 6×6×3的圖片樣本,使用 3×3×3 的卷積核(filter)進行卷積操作。此時輸入圖片的 channels
為 3,而卷積核中的 in_channels
與需要進行卷積操作的數據的 channels
一致(就是圖片樣本,為3)。接下來進行卷積操作,卷積核中的27個數字與分別與樣本對應相乘后,再進行求和,得到第一個結果。依次進行,最終得到 4×4的結果。由于只有一個卷積核,所以最終得到的結果為 4×4×1,out_channels
為 1。如下圖所示:
在實際應用中,都會使用多個卷積核。這里如果再加一個卷積核,就會得到 4×4×2的結果。如下圖所示:
2. nn.Conv2d
class torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, groups=1, bias=True)
nn.Conv2d
的功能是:對由多個輸入平面組成的輸入信號進行二維卷積。輸入信號的形式為:
(N,C_{in},H,W)
(1)參數說明
**N:**表示batch size(批處理參數)
C_{in} :表示channel個數
**H,W:**分別表示特征圖的高和寬。
**stride(步長):**步長,默認為1,可以設為1個int型數或者一個(int, int)型的tuple。
**kernel_size:**卷積核的寬度和長度,單個整數或由兩個整數構成的list/tuple。如為單個整數,則表示在各個空間維度的相同長度。
**padding(補0):**控制zero-padding的數目,padding是在卷積之前補0。
**dilation(擴張):**控制kernel點(卷積核點)的間距; 可以在此github地址查看:Dilated convolution animations
**groups(卷積核個數):**通常來說,卷積個數唯一,但是對某些情況,可以設置范圍在1 —— in_channels中數目的卷積核:
(2)圖像尺寸
經過一次卷積之后,生成的圖的大小:
(original_size - (kernal_size - 1)) / stride
3. nn.ConvTranspose2d
nn.ConvTranspose2d的功能是進行反卷積操作
(1)輸入格式
nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, groups=1, bias=True, dilation=1)
(2)參數的含義
- in_channels(int) – 輸入信號的通道數
- out_channels(int) – 卷積產生的通道數
- kerner_size(int or tuple) - 卷積核的大小
- stride(int or tuple,optional) - 卷積步長,即要將輸入擴大的倍數。
- padding(int or tuple, optional) - 輸入的每一條邊補充0的層數,高寬都增加2*padding
- output_padding(int or tuple, optional) - 輸出邊補充0的層數,高寬都增加padding
- groups(int, optional) – 從輸入通道到輸出通道的阻塞連接數
- bias(bool, optional) - 如果bias=True,添加偏置
- dilation(int or tuple, optional) – 卷積核元素之間的間距
審核編輯:湯梓紅
-
函數
+關注
關注
3文章
4332瀏覽量
62653 -
python
+關注
關注
56文章
4797瀏覽量
84720 -
pytorch
+關注
關注
2文章
808瀏覽量
13233
發布評論請先 登錄
相關推薦
評論