CNN: 畳み込み層の出力サイズ計算 (パディングあり)
今回は、入力特徴マップの周囲にパディング (Padding) が適用されている場合の出力サイズ計算です。パディングは、畳み込み演算において重要な役割を果たします。
パディングの役割
- 出力サイズの制御: パディング量を調整することで、畳み込み後の特徴マップのサイズを制御できます。特に、サイズを入力と同じに保つ(Same Padding)ことや、縮小の度合いを調整することが可能です。
- 境界情報の活用: パディングがない場合、フィルターが入力特徴マップの端のピクセルに適用される回数は中央部のピクセルよりも少なくなります。パディングを追加することで、端のピクセル情報もより多く演算に含めることができ、情報の損失を軽減します。
出力サイズの計算式 (再掲)
出力サイズ \(O\) の計算式は `dl-004` と同じです。
$ O = \lfloor \frac{W - K + 2P}{S} \rfloor + 1
$
ここで、\(W\) は入力サイズ、\(K\) はカーネルサイズ、\(P\) はパディング(片側に追加されるピクセル数)、\(S\) はストライドです。
今回の問題における計算 (高さ)
与えられたパラメータ:
- 入力高さ (W): 28
- カーネル高さ (K): 5
- パディング (P): 2
- ストライド (S): 1
これらの値を計算式に代入します。
$O_{height} = \lfloor \frac{28 - 5 + 2(2)}{1} \rfloor + 1 \\\
= \lfloor \frac{28 - 5 + 4}{1} \rfloor + 1 \\\
= \lfloor \frac{27}{1} \rfloor + 1 \\\
= \lfloor 27 \rfloor + 1 \\\
= 27 + 1 = 28
$
したがって、出力特徴マップの高さは 28 です。
Same Padding と Valid Padding
畳み込み演算におけるパディングの方法として、主に以下の2つがよく使われます。
- Same Padding: 出力特徴マップのサイズが、入力特徴マップのサイズと(ストライドが1の場合)同じになるようにパディング量を自動的に計算して適用する方式です。
- 今回のケース: 入力高さ28に対し、出力高さも28となりました。これは `P=2` がカーネルサイズ `K=5`、ストライド `S=1` における Same Padding に相当するためです。(奇数カーネルでS=1の場合、一般に \( P = (K - 1) / 2 \) で計算されます。\( (5-1)/2 = 2 \))
- 利点: ネットワークの層を深くしても特徴マップの空間的な解像度を維持しやすいため、設計が容易になります。
- Valid Padding: パディングを全く適用しない(P=0)方式です。フィルターが入力特徴マップの境界をはみ出さない範囲でのみ計算されます。
- 結果: 通常は出力サイズが入力サイズよりも小さくなります。
どちらのパディング方式を使用するかは、ネットワークの設計方針や目的によって選択されます。