9-04 Affine1の論理シミュレーション
このアーカイブはAffine1層目のModelSim(使い方はここ)プロジェクトです。
●演算結果の出所は7つある
図9-20はtb_conv_hw/conv_hw_1のZ7_WR_DATA_00〜06です。Z7_WR_DATA_00からは出力が0,
0, 127, 0, 127, 0, 75, 0と、順に8個出てきます。Z7_WR_DATA_01〜05までも同様に8個、最後のZ7_WR_DATA_06だけは出力が2個で、合計50個出てきます。 |
図9-20 ModelSimのWaveformでZ7_WR_DATA__00〜06の波形を見る
●affine_layer12.xlsmの演算結果と比較
EXCELで計算した結果と比較しましょう。図9-21のDrop1行の最初の8個がZ7_WR_DATA_00、次の8個がZ7_WR_DATA_01と一致しています。Z7_WR_DATA_06まで計50個が合っているか確認しましょう。 |
図9-21 affine_layer12.xlsmのDrop1行
●Affine1層目の結果は7個のRAMの中に書いてある
tb_conv_hw/conv_hw_1/RAM_Z7_00の下にあるRAMDATAを開いてみると図9-22のように8個のデータが書かれています。最後のRAM_Z7_06だけは2個、合計50個になります。 |
図9-22 RAM_Z7_0XのRAMデータ
●並列化の効果を見る
Affine1層目の演算は図9-23のように82us程度で終わります。重み行列は1024×50あるのですが、7並列で演算するのでサイクル数は1024×8=8kサイクル+αになります(クロック周期は10ns)。 |
図9-23 Affine1層目にかかるサイクル数は82us
●後はAffine2層目を残すのみ!
Affine1層目で計算された50個の値はAffine2層目の入力になります。Affine2層目の出力を判定回路(SoftMax関数に相当)で判定したものが「畳み込みニューラルネットワーク」の結果になります。 |
目次へ戻る |