8-02 vgg-2層目のVHDL化(続き)

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

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


図8‐37 relu.outを64個のCSVファイルに分ける


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

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

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


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


●整数で乗算・加算させているので必ず一致する

 シミュレーション結果がPythonとピタリ一致したということは、少なくとも
vgg-2層目が正しくHDL化されたことを意味します。
 もし一致しないときはシミュレーションで途中経過を丁寧に見ていきますが、その際の比較対象はPythonよりもEXCEL(ここでいったんEXCEL化したことを思い出そう)が良いと思います。

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

●その他のVBAモジュールの説明

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


図8-39 W2_Biasシートに重み係数


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

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

(*2)VHDLファイルの数を減らすとシミュレーションが速くなるので一つにまとめる。


図8-40 128ビット×576アドレスになる


最初のページへ



目次へ戻る