8-03 vgg-3, 4層目のVHDL化(続き)

●relu.outそのままではPythonと比較できない

 3層目もシミュレーション結果(relu.out)の画素値をVBAで並び替えます。このEXCELファイルを適当なフォルダ(仮にC:\SSD\EXCELとする)に置きます。
 そのフォルダにサブフォルダvbaoutputを作成し、relu.out(これを解凍)をそのフォルダ(C:\SSD\EXCEL\vbaoutput)に置きます。
 EXCELをスタートし、開発タブからVisual Basicを選択し、VBAの画面を開きます。
 VBAProjectから標準モジュールのModule20、21、22を順番に実行します。
 図8‐49のようなダイアログが現れ、lay3sim_000〜127が生成されます。


図8-49 relu.outを128個のCSVファイルに分ける


●バッチファイルでまとめて比較する

 このアーカイブは
Pythonの結果です。解凍すると128個のCSVファイル(lay3out_000〜127.csv)が現れるのでEXCELのフォルダに置きます(vbaoutputの上のフォルダ!)。これらをシミュレーション結果(lay3sim_000〜127.csv、これらはvbaoutputフォルダにある)と比較します。

 128個のファイルを1個1個比較するのは大変なのでバッチファイルで処理します。
 Windowsの「コマンドプロンプト」を開き、このバッチファイルをEXCELフォルダにおいて実行します。すると図8‐50のように128個のファイル同士が比較されるので、不一致がないことを確認します。


図8‐50 コマンドプロンプトでtest3.batを走らせる

●3層目の出力が4層目の入力になる

 シミュレーション結果がPythonとピタリ一致したということは、少なくともvgg-3層目が正しくHDL化されたことを意味します。

 3層目のシミュレーション結果(relu.out)は4層目の入力として使います。4層目も同様にシミュレーションしてPythonとの一致を見ます。

●128列をエンコードして1つにつなげるVBA

 このEXCELのVBAにはModule10がありますが、それは重み係数のVHDLを生成するものです。EXCEL最初のシートW3_Biasを見ると、係数は-4, -1, +1, +4の4種類です。

 Module10を実行すると、図8‐40のようなファイル(dataUnified.txt)が生成されます。これは128列をエンコード(-4, -1, +1, +4を2ビットの10, 11, 00, 01に割り当て)して2x128 = 256ビットにしたものです。


図8-51 128個のセルにある係数を1つにまとめる


次のページへ



目次へ戻る