AI
2024/06/11
古川 直輝

conv2dの引数の役割とモデルに与える影響とは

logo_Python

今回はconv2dの引数であるpadding、kernel_size、strideの役割とそれらの値を変えるとモデルがどのように変化するかを記載していきます。

はじめに

今回はconv2dの引数であるpadding、kernel_size、strideの役割とそれらの値を変えるとモデルがどのように変化するかを記載していきます。

paddingとは

paddingは入力データの周囲に追加するピクセルを指します。これにより、出力の空間的な寸法を制御し、特定の特性を持つ出力を得ることができます。例えば、入力が5×5の画像でカーネルサイズが3×3の場合、paddingなしだと出力は3×3になります。入力と同じく5×5の出力を得るにはpadding = 1とすることで、周囲に1ピクセルずつパディングを追加します。

kernel_sizeとは

kernel_sizeは畳み込みフィルタ(カーネル)の寸法を指定します。カーネルは、入力画像上を移動して特徴を抽出する小さな行列です。カーネルのサイズは通常、3×3 や5×5 などの正方形で指定されますが、長方形のカーネルも使用できます。例えば、カーネルサイズが3×3 の場合、畳み込みフィルタは3×3 の範囲をカバーし、この範囲のピクセル値を使用して出力を計算します。

strideとは

strideはカーネルが入力データ上を移動するステップの大きさを指します。ストライドが1の場合、カーネルは1ピクセルずつ移動します。ストライドが2の場合、カーネルは2ピクセルずつ移動します。ストライドを大きくすると、出力サイズは小さくなります。例えば、ストライドが1の場合、カーネルは入力画像上を1ピクセルずつ移動します。ストライドが2の場合、カーネルは2ピクセルずつ移動するため、計算量が減り出力サイズも小さくなります。

それぞれの引数がモデルに与える影響

paddingの値が大きいとき:


 メリット:出力サイズが大きく維持されるため、より多くの空間的情報が保持されます。


 デメリット:出力サイズが大きくなるため、計算量とメモリ使用量が増加し、モデルが重くなります。


paddingの値が小さいとき


 メリット:出力サイズが小さくなるため、計算量とメモリ使用量が削減され、モデルが軽量化する。


 デメリット:層が深くなるにつれて出力サイズが急激に減少し、空間的な情報が失われる。


 


kernel_sizeの値が大きいとき:


 メリット:広範囲の大きな特徴量を捉えられる。


 デメリット:特徴マップの空間解像度が低下しやすく、またパラメータ数が増加するため、計算時間がかかる。


kernel_sizeの値が小さいとき:


 メリット:細かい特徴を捉えられる。特徴マップの空間解像度を保持しやすい。パラメータ数が少ないため、計算時間が短い。


 


strideの値が大きいとき:


 メリット:フィルターの適応回数が少なくなり、計算量が減少する。


効率的に情報を圧縮できます。


 デメリット:空間的な解像度が低下し、詳細な情報が失われる可能性があります。


strideの値が小さいとき:


 メリット:空間的な解像度が高く保たれ、詳細な情報が多く残ります。


 デメリット:フィルターの適応回数が多くなり、それに伴って計算量も増加します。またフィルターが少しずつ重なりながら入力画像をスキャンするため、データの効率的な圧縮が難しくなります。

まとめ

今回はconv2dの引数について記載しました。


padding、kernel_size、strideのそれぞれの値を変えることでモデルがどのように変化するかが分かったかと思います。


実際にモデルを構築する際に参考にしてみましょう。

New call-to-action