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個もあるので、前層までと同様にバッチファイルによって比較し、全てのチャネルがピタリ一致することを確認します。 |
最初のページへ
目次へ戻る |