5-01 extras-1, 2層目のEXCEL化

●extras-1層目のEXCELを開く

 このブロック図の左中段に
extras1〜8と呼ばれる畳み込み層があります。まずはその1層目をEXCEL化します。これをダウンロードして開きます。

 シートは1つ(exW1_Bias)だけで、これは重み係数のシートです(図5‐01)。入力は1024チャネルありますが、
カーネルが1x1=1なので1024行、出力は256チャネルあるので256列あります。

 係数は-8, -4, -2, -1, +1, +2, +4, +8の
8種類に制限しています。全て2の累乗なのでビットシフトで乗算を達成できます(乗算器の節約になる)。またこの層もバイアスは省略するのでありません。


図5-01 extras-1層目の係数。カーネルが1×1であることに注意


●64枚のシートに入力1024チャネル

 
VBAのModule1を実行すると、lay15out_000.csv〜lay15out_1023.csv(15層目の出力、これを解凍して同じディレクトリに置く)が新しいシートに転写され、それら(inCh00〜inCh63)がextra-1層目の入力になります(図5-02)。

 この層の入力は1024チャネルですが、生成されるシートは64枚、すなわち1枚のシートに16チャネルぶんの画像が張り付けられています(*1)。15層目の出力は19×19
なので19列、各シート16チャネルぶんあるので19x16=304行になります。

(*1)シート数があまりにも多いとEXCELが重くなり、パソコンのメモリを圧迫するのでシート数を節約する。


図5‐02 64×16=全部で1024チャネル


●im2colxxシートも64枚に1024チャネルぶん

 Module02を実行するとim2col00〜63が生成されます(図5‐03)。カーネルは1×1、各シート16チャネルぶんあるので1×16=16列、行数は19×4=76行になります。(*2)

(*2)19×19の画像の上4行のみ計算させる。


図5‐03 各シート76行×16列になる


●extras-1層目の出力の答え合わせ

 extras層もvgg層と同じようにModule03〜07を順番に実行して、行列乗算→加算→下位ビット切り捨て→ReLuと演算を進めます。

 図5‐04はoutCh000シートとex1out_000.csv(Pythonで計算したextras-1層目のチャネル0)を比較しています(これを解凍して開く)。出力は256チャネルあり、それぞれ
ピタリ一致することを確認します。(*3、4)

(*3)EXCELでは4行のみ計算(19行全部だと時間がかかるので)。5行目以下を計算させるにはここを参考。
(*4)EXCELではoutCh000〜003まで計算。outCh004以降を計算させるにはここを参考。


図5‐04 EXCEL化してもPythonの結果と変わらない


次のページへ



目次へ戻る