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

●4層目のシミュレーション用プロジェクト

 vgg-4層目のModelSim(シミュレータ)プロジェクトのアーカイブを解凍すると図8‐56のような構成になっています。出力が128チャネルですが1個の積和演算器で2チャネルを受け持つのでdotpro_W4_xxは
64個になります。また乗算器はビットシフト型です。

 この層はプーリング(pooling_lay4)があり、それ用のメモリ(SRAM256x640_pool)が1個必要になります。


図8-56 vgg-4層目のツリー構造


●ラインの周期は倍になるがライン数が半分になる

 3層目の出力はここに示すように23.04us x 150 = 3.456msで1ラインぶんの演算が終わります。図8‐57を見るとLay2NextWrSel(4層目の入力ラインバッファの切り替え信号)が3.456msで切り替わっています。

 4層目の出力には
プーリングがあるので、46.08us x 75 = 3.456msで1ライン計算しますが、ここの右下のように無効ラインの期間が入るので、その倍の6.912msで1ライン出力されます。図8‐57を見るとReluWrSel(出力ラインバッファの切り替え信号)が6.912msで切り替わっています。

 プーリングにより75ラインになるので1画面の処理は6.912ms x 75 = 518.4msとなり、結局1,2,3層と同じになります。


図8-57 入力1ラインの周期と出力1ラインの周期

●relu.outに出力が書かれている

 4層目も出力はテキストファイルに落とされます。relu.outを見るとデータ幅は5 x 128 = 640bitになっています。またプーリングで75×75画素になっているので、1画面で5625行になります。前層までと同様にEXCELのVBAでデータを並び替え、Pythonの結果と比較します。


図8-58 75x75 = 5625行、各行データ幅は640ビット


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

 CSVファイルが128個もあるので、前層までと同様にバッチファイルによって比較します。その結果は図8-59のようになり、全てのチャネルがピタリ一致しています。


図8-59 コマンドプロンプトでtest4.batを走らせる


●4層目のファイル類はここ

プロジェクトのアーカイブ
EXCEL+VBA
relu.out
Pythonの結果
バッチファイル


最初のページへ



目次へ戻る