4-05 vgg-8, 9, 10層目のEXCEL化

●前層と比べて8,9,10層目は入力画素数が1/4、出力チャネル数が2倍

 vgg-7層目のプーリング(ブロック図の左から3番目の"P")が終わると次は8,9,10層目になります。ブロック図にあるようにこれらの層は入力画素数が
38x38、出力チャネル数は512になります。

●下表から各層のファイルをダウンロード

 各層の
EXCELファイルを下の表からダウンロードして開きましょう。

・シートは重み係数だけで、その種類は同表のように制限されています。
・入力画像がないので
入力CSVをコピーしてVBAを順番に実行していきます。
・シート数節約のために1枚のシートに複数チャネルぶん置きます(inChxx, im2colxx等)。
・38行全部計算させると時間がかかるので最初の4行のみ計算。
・512チャネル全部計算させると時間がかかるので最初の4チャネルのみ計算。
・EXCELで計算した出力とPython(
出力CSV)を比較します。
・最後の層だけはプーリングがあります。

表4‐05 クリックしてダウンロード
EXCELファイル 入力CSV 出力CSV 係数の種類 プーリング
8 SSD_layer08.xlsm lay7out.zip lay8out.zip 8種(±1,2,4,16) なし
9 SSD_layer09.xlsm lay8out.zip lay9out.zip 8種(±1,2,4,16) なし
10 SSD_layer10.xlsm lay9out.zip lay10out.zip 8種(±1,2,4,16) あり

●8層目の重み係数シート

 図4‐38はSSD_layer08.xlm(8層目のEXCEL)のW8_Bias(重み係数シート)です。このように係数は8種類(-16, -4, -2, -1, +1, +2, +4, +16)に制限されています(*1)。またこの層は入力が256チャネルあるので256x9 = 2304行(*2)、出力が512チャネルあるので512列あります。


(*1)2の累乗なのでビットシフトで乗算できる(乗算器の節約)
(*2)9、10層目は入力チャネルが512あるので重み係数シートは512x9 = 4608行になる。


図4‐38 8層目のEXCELファイル

●10層目の出力の答え合わせ

 図4‐39はModule10の実行結果(Pool001シート)とPythonで計算した10層目のチャネル1(lay10out_001.csv)を比較しています(上の表からダウンロード)。各チャネル
ピタリ一致することを確認します(*3,4)。8層目、9層目も同様に確認します。

(*3)EXCELでは2行のみ計算(38行全部だと時間がかかるので)。3行目以下を計算させるにはここを参考。
(*4)EXCELではPool00〜03まで計算。Pool04以降を計算させるにはここを参考。


図4‐39 10層目チャネル1の計算結果(EXCELとPython)


●各行、各列の最後に0を付け加えてからプーリング

 10層目のoutChxxxシート(プーリング前)の画像は本来L2Norm(ブロック図参照)に入力されますが、source1を省略したことによりそのフローは必要なくなりました。


目次へ戻る