如何計算卷積層輸出圖像的大小&以及池化大小輸出
卷積
在卷積神經網絡(CNN)中,計算卷積層輸出圖像的大小是一個常見的操作。以下是卷積計算的基本公式和步驟:
-
卷積層輸出尺寸計算公式:
Output_size = ? Input_size ? Filter_size + 2 × Padding Stride ? + 1 \text{Output\_size} = \left\lfloor \frac{\text{Input\_size} - \text{Filter\_size} + 2 \times \text{Padding}}{\text{Stride}} \right\rfloor + 1 Output_size=?StrideInput_size?Filter_size+2×Padding??+1其中:
- Input_size \text{Input\_size} Input_size 是輸入圖像的尺寸(高度或寬度)。
- Filter_size \text{Filter\_size} Filter_size 是卷積核的尺寸(通常是正方形,如 3 × 3 3 \times 3 3×3)。
- Padding \text{Padding} Padding 是填充的像素數。
- Stride \text{Stride} Stride 是卷積核移動的步長。
- ? ? ? \left\lfloor \cdot \right\rfloor ??? 表示向下取整。
-
實例:
假設輸入圖像尺寸為 32 × 32 32 \times 32 32×32,卷積核尺寸為 5 × 5 5 \times 5 5×5,填充為 0 0 0(即沒有填充),步長為 1 1 1。
Output_size = ? 32 ? 5 + 2 × 0 1 ? + 1 = ? 27 ? + 1 = 28 \text{Output\_size} = \left\lfloor \frac{32 - 5 + 2 \times 0}{1} \right\rfloor + 1 = \left\lfloor 27 \right\rfloor + 1 = 28 Output_size=?132?5+2×0??+1=?27?+1=28
因此,輸出圖像的尺寸為 28 × 28 28 \times 28 28×28。 -
帶填充和步長的實例:
如果輸入圖像尺寸為 32 × 32 32 \times 32 32×32,卷積核尺寸為 3 × 3 3 \times 3 3×3,填充為 1 1 1(即每邊填充一圈像素),步長為 2 2 2:
Output_size = ? 32 ? 3 + 2 × 1 2 ? + 1 = ? 32 2 ? + 1 = 16 + 1 = 17 \text{Output\_size} = \left\lfloor \frac{32 - 3 + 2 \times 1}{2} \right\rfloor + 1 = \left\lfloor \frac{32}{2} \right\rfloor + 1 = 16 + 1 = 17 Output_size=?232?3+2×1??+1=?232??+1=16+1=17
因此,輸出圖像的尺寸為 17 × 17 17 \times 17 17×17。 -
卷積層的參數個數:
計算卷積層的參數個數的公式為:
Params = ( Filter_height × Filter_width × Input_channels + 1 ) × Number_of_filters \text{Params} = (\text{Filter\_height} \times \text{Filter\_width} \times \text{Input\_channels} + 1) \times \text{Number\_of\_filters} Params=(Filter_height×Filter_width×Input_channels+1)×Number_of_filters例如,對于一個具有 3 個輸入通道、32 個過濾器和 5 × 5 5 \times 5 5×5 卷積核的卷積層:
Params = ( 5 × 5 × 3 + 1 ) × 32 = ( 75 + 1 ) × 32 = 2432 \text{Params} = (5 \times 5 \times 3 + 1) \times 32 = (75 + 1) \times 32 = 2432 Params=(5×5×3+1)×32=(75+1)×32=2432
通過這些公式和實例,你可以計算任何卷積層的輸出尺寸和參數個數。
池化
池化(Pooling)操作通常用于減小特征圖的尺寸,同時保留重要的特征。計算池化層輸出圖像的大小的方法類似于卷積層,但公式略有不同。
池化層輸出尺寸計算公式
Output_size = ? Input_size ? Pool_size Stride ? + 1 \text{Output\_size} = \left\lfloor \frac{\text{Input\_size} - \text{Pool\_size}}{\text{Stride}} \right\rfloor + 1 Output_size=?StrideInput_size?Pool_size??+1
其中:
- Input_size \text{Input\_size} Input_size 是輸入圖像的尺寸(高度或寬度)。
- Pool_size \text{Pool\_size} Pool_size 是池化窗口的尺寸(通常是正方形,如 2 × 2 2 \times 2 2×2)。
- Stride \text{Stride} Stride 是池化窗口移動的步長。
- ? ? ? \left\lfloor \cdot \right\rfloor ??? 表示向下取整。
實例計算
假設我們有一個池化層,輸入圖像的尺寸為 54 × 54 × 96 54 \times 54 \times 96 54×54×96,池化窗口的尺寸為 2 × 2 2 \times 2 2×2,步長為 2(即常見的最大池化操作)。
-
計算高度和寬度:
Output_height = ? 54 ? 2 2 ? + 1 = ? 26 ? + 1 = 27 \text{Output\_height} = \left\lfloor \frac{54 - 2}{2} \right\rfloor + 1 = \left\lfloor 26 \right\rfloor + 1 = 27 Output_height=?254?2??+1=?26?+1=27Output_width = ? 54 ? 2 2 ? + 1 = ? 26 ? + 1 = 27 \text{Output\_width} = \left\lfloor \frac{54 - 2}{2} \right\rfloor + 1 = \left\lfloor 26 \right\rfloor + 1 = 27 Output_width=?254?2??+1=?26?+1=27
因此,輸出圖像的高度和寬度均為 27。
- 輸出通道數:
池化操作不改變通道數。因此,輸出圖像的通道數仍然是 96。
最終輸出尺寸
結合上面的計算,池化后的輸出圖像的尺寸為 27 × 27 × 96 27 \times 27 \times 96 27×27×96。
解釋
- 輸入圖像尺寸: 54 × 54 × 96 54 \times 54 \times 96 54×54×96
- 池化窗口尺寸: 2 × 2 2 \times 2 2×2
- 步長: 2
池化操作通過應用 2 × 2 2 \times 2 2×2 的池化窗口,以步長 2 在 54 × 54 54 \times 54 54×54 的輸入圖像上滑動,從而得到一個高度和寬度均為 27,通道數為 96 的輸出特征圖。
總結
通過上述步驟,我們解釋了如何計算池化層輸出圖像的尺寸。池化后的輸出尺寸為 27 × 27 × 96 27 \times 27 \times 96 27×27×96。