20-05 エミュレーションモードでFPGA内部とPythonの一致を見る
●Pythonと同じ入力をFPGAの入力に持ってくる
「エミュレーションモード」では図20‐27のような静止画が表示されます。これらはMNISTテスト画像です(*1)
(*1)Python実行の最後に表示した48枚のうち、最初の16枚が繰り返し(20回)表示される。 |
図20‐27 Pythonで推論する際に使用するMNIST画像を表示
●ROMがカメラの代わりをするエミュレーションモード
MNISTテスト画像は図20‐28のようにFPGA内部のROMに格納されています。エミュレーションモードでは「カメラ」の代わりに「ROM」が選択されるため、MNISTテスト画像が表示・推論されます。 |
図20‐28 EMUMODE=1でMNIST画像が選択される
●Pythonと同じことがFPGA内部信号で起こっているか
図20‐29では緑色で推論結果が上書きされています。この状態でFPGA内部信号をロジックアナライザであたり、Pythonとの一致を見ます。 |
図20-29 MNISTテスト画像をFPGA内部で推論している
●最終層の出力はどうなっているか
図20‐30はSignal Tap Logic Analyzer(*2)で見たFPGA内部信号、6層目の出力の部分(AIN)です。512, -485, -287,
-376,... -1065, -1427と16個あります(*3)。
(*2)Quartus Primeに付属するロジックアナライザ。FPGA内部信号がUSB経由でパソコンに送られる。
(*3)数字10クラス+背景6クラスで計16クラス。最初の512が最大なので答えは数字の”0”。 |
図20-30 6層目の出力(16個)で推論結果の判定(最初の1個だけ正の数)
●ひるがえってPythonでは・・・
図20‐31はPython (mnist_pred.py) における6層目の出力です(*4)。FPGA内部信号とピタリ一致していることが分かります。
(*4) lay6out_sample_00.csv, Pythonプログラムが各層の出力をCSVファイルに書き出していた。 |
図20-31 Python(この図)とFPGA(図20‐30)を比較
最初のページへ
目次へ戻る
|