11‐01 全結合6層目は入力128画素、出力43画素
●5層目の出力が6層目の入力
5層目は全結合型なので出力チャネル数は1、データの数は128画素になります。
5層目と6層目の間に図11‐01のようなRAMを2個設け、ピンポンモードでデータをやり取りします。そうすれば「書きながら読む」ことができます。 |
図11-01 5層目の出力、6層目の入力が入るRAM
●6層目もDense(全結合型)
6層目の重み行列は128行×43列で、図11−02のように入力データ1行×128列と乗算します。乗算結果は43画素になり、それにバイアスを加算したものが6層目の出力となります。全結合層ではこのような単純な行列乗算&バイアス加算を行います。 |
図11−02 道路標識のラベルが43種あるので結果は43個
●6層目は乗算器1個で間に合う
6層目の行列乗算は128 x 43回の乗算が必要になり、乗算器一個で行うと5504サイクル、すなわちクロック100MHzで55.04usです。CNNの1ブロックは320us毎に入力されるので、余裕をもって間に合うことが分かります。
●ROMも1個で良い
6層目の係数ROMは図11‐03のようにアドレスは7ビット、データは9bit×43=387ビットになります。387ビットのデータはW6DataSelという信号で9ビットづつ43個に分けられます。
RAMから読み出された128個のデータは、ROMの縦一列128データと積和されます。それを43列ぶん繰り返して行列乗算は終了です。 |
図11‐03 係数の数は128×43個
●6層目は係数が少ないがHDL自動生成
6層目の重み係数は128x43 = 5504と少ないですが、HDLはVBAで自動生成するのが間違いがなくて良いと思います。 |
次のページへ
目次へ戻る
|