4-02 vgg-2層目のEXCEL化
●1層目比べて2層目はチャネル数や係数の数が格段に増える
vgg-1層目は入力が3チャネルでしたが2層目は入力が64チャネルになります。また2層目は出力も64チャネルあるので係数の数は64x9x64
= 36,864になります。
1層目と同じように2層目を設計すると回路規模が巨大になるので、「入力画像のビット数を減らす」、「係数の種類を減らす」といった工夫が必要になります。 |
●2層目の重み係数値は4種類のみ
vgg-2層目をEXCEL化します。これをダウンロードして開きましょう。
シートは1つ(W2_Bias)だけで、これは重み係数のシートです(図4‐15)。入力は64チャネルあり、カーネル(2次元フィルタ)が3x3=9なので64x9
= 576行、出力は64チャネルあるので64列あります。
係数が大量にあるので各値を-4, -1, +1, +4の4種類に制限しています。全て2の累乗なのでビットシフトで乗算を達成できます(乗算器の節約になる)。またこの層もバイアスは省略するのでありません。 |
図4-15 畳み込み2層目は係数を4種に
●入力画像はVBAで転写する
EXCELには重み係数シートのみ存在し、入力画像がありません。「開発」タブからVisual Basicをクリックし、Module01を実行します。するとlay1out_00.csv〜lay1out_63.csv(1層目の出力、これを解凍して同じディレクトリに置く)が新しいシートに転写され、それら(inCh00〜inCh63)が2層目の入力になります(図4‐16)。なお、1層目の出力は300×300ですが「パディング」を施すことにより302×302画素になっています。
入力値の範囲は0〜31(符号なし5ビット)に制限されています(1層目のReluでリミッタを施した)。ビット数を削減し、ハードウエアの規模を減らすのが目的です。 |
図4‐16 2層目の入力は64チャネル。値は0〜31の範囲。パディングで302×302になる
その後はModule02〜08を順番に実行していきます。図4‐17はModule02の実行結果、im2col00〜63が生成されています(畳み込み用に画素の並び替え)。 |
図4‐17 im2col00〜63の自動生成
EXCELのシートが多すぎるとパソコンのメモリを圧迫します。inCh00〜63はもう必要ないのでこの時点で削除するとよいかもしれません(図4‐18)。 |
図4‐18 im2col00〜63を生成したらもうinCh00〜63は要らない
次のページへ
目次へ戻る |