9-02 extras-3, 4層目のVHDL化(続き)

●stride=2 ゆえに画素数が減る

 extras-4層目の畳み込みも2層目と同じように、パディングは1、そして
ストライドが2になります。
 図9-26のように枠を1画素分拡げ、3x3のカーネルを
2画素ぶん横にに動かしながら積和演算を行います(同図のように右端は1個余る)。縦方向も同様に2ラインぶん動かすので、その結果出力は5x5画素になります(下端も1ライン余る)。

図9-26 プーリングなしでもこうすれば画素数が減る

●画素やラインの飛ばし方

 図9-27ではbaseaddrにcount3を加算して入力バッファのアドレスを生成してます。baseaddrはカーネルの位置を表すもので、0, 2, 4, 6,...と2づつ増えており、これは横方向のストライドが2ということです。
 縦方向はバッファ選択のベースになる信号を2づつ増やしていきます。これらによってstride = 2が達成できます。


図9-27 baseaddrが読み出しアドレスのベースになる

●画素数が減って1ライン数の計算周期が長くなる

 1ライン(5画素)書きこむ周期は図9-28のように110.592msになります。これを5ラインぶん繰り返して1画面終了します。


図9-28 1ライン演算して書き込むようす

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

 extras-4層目も出力はテキストファイルに落とされます(図9-29)。5×5画素なので1画面で25行、また出力は256チャネルなのでビット幅は
8bit x 256= 2048bit になります。これをVBAで256個のCSVファイルに分割してPythonの結果と比較します。


図9-29 5x5で25行、8ビットx256chで各行2048ビット

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

 CSVファイルが256個もあるので、前層までと同様にバッチファイルによって比較し、全てのチャネルがピタリ一致することを確認します。

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

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

最初のページへ



目次へ戻る