Receptive Field 計算機
CNNのReceptive Fieldを動的に計算するページ。
概要
CNNは階層的に、入力ベクトルがレイヤで何かしらの操作(畳み込みやプーリング)が施され出力ベクトルが作成される構造となっている。出力ベクトルの1要素に影響を与える入力ベクトルの領域は「受容野 (Receptive Field)」と呼ばれる。
Receptive Fieldの計算方法
各レイヤの出力ベクトルのサイズは以下の式で導出できる。 \[ n_{i} = \left\lfloor \frac{n_{i-1}+2 \times p-k}{s} \right\rfloor + 1 \] ここで$ n_{i} $は$i$レイヤ目の出力ベクトルサイズ、$ n_{i-1} $はひとつ前のレイヤの出力ベクトルのサイズ($i.e.$ $i$レイヤ目の入力ベクトルサイズ)、$ i $はレイヤのインデックスを表す。レイヤのパラメータとして、$ p $はパディングサイズ、$ k $はカーネルサイズ、$ s $はカーネルのストライドを表す。
受容野を計算するために、ジャンプという概念を導入する。これは次式で表される。 \[ j_{i} = j_{i-1} \times s \] ここで$ j_{i} $は$i$レイヤ目のジャンプという意味である。そして、$i$レイヤ目の出力ベクトルの受容野$r_{i}$は以下の式で導出できる。 \[ r_{i} = r_{i-1} + (k-1) \times j_{i-1} \]
モデル生成
Example :
順伝播
使い方
1. モデル生成
はじめに擬似的にCNNを生成する。ModuleにてConv2D,Pool2Dを選択(Receptive Fieldの計算には関係しないけど)して、それぞれのカーネルサイズ、ストライド、パディングを整数値で入力し、Addボタンを押していくことでレイヤが追加されていく。※注意 : 生成される各レイヤのDeleteボタンを押すと挙動がおかしくなるかもです。随時修正します...m(_ _)m
2. 順伝播
CNNを生成した状態で、Input Sizeにて入力サイズを整数で入力し、Forwardボタンを押すことで、各レイヤの入力サイズ、出力サイズ、受容野を出力する。Reference
- Receptive Field Arithmetic for Convolutional Neural Networks page link