9-01 extras-1, 2層目のVHDL化(続き)

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

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

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

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

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


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

●画素数とライン数が減ったので計算周期が長くなる

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


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

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

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


図9-13 10x10で100行、8ビットx512chで各行4096ビット

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

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

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

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

最初のページへ



目次へ戻る