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で自動生成するのが間違いがなくて良いと思います。


次のページへ


目次へ戻る