8-07 vgg-14, 15層目のVHDL化(続き)

●15層目はカーネルが1x1

 図8‐138は積和演算の部分、出力1チャネルの1画素を計算するのに10ns x 1024 = 10240nsかかります(カーネルが1x1なので)。


図8-138 入力1024チャネル、カーネル1x1なので10240ns(クロック100MHz)

●カーネルが小さいのでその分たくさんのチャネルを計算できる

 図8‐139は一つの乗算器で出力128チャネルの1画素を計算するようす、10240ns x 128 = 1310.72usかかっています。これが8つ並列で動くので出力1024チャネルの1画素を計算するのに1310.72us、19x19画素なので1ラインに1310.72us x 19 = 24.90368msかかります。


図8-139 一つの乗算器で128chの出力を計算する

●他の層はバイアス省略できたが・・・

 15層目だけは「バイアス加算」があります。図8‐140のmac_000にバイアスを足した信号がplusbias_000になります。


図8-140 この層だけはバイアス加算が必要


●カーネルサイズ以外はほぼ前層と一緒

 カーネル数の違いはあるものの画素数は19x19のままなので1ラインの計算周期は前層と同じ27.648msになります(24.90368ms+休み時間)。また1画面計算するにはその19倍の525.312msかかります。

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

 15層目も出力はテキストファイルに落とされます。19×19画素なので1画面で361行、また出力は1024チャネルなのでビット幅は
8bit x 1024 = 8192bit になります(次層以降は1画素8ビットになる)。これをVBAで1024個のCSVファイルに分割してPythonの結果と比較します。


図8‐141 各画素8ビットであることに注意

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

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

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

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

最初のページへ



目次へ戻る