FC2カウンター FPGAの部屋 2018年07月03日

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Kerasを使用したMNIST CNNで手書き文字認識8(特徴マップが3個のMNISTのCNNを再学習2)

Kerasを使用したMNIST CNNで手書き文字認識7(特徴マップが3個のMNISTのCNNを再学習)”の続き。

前回は、過学習が手書き数字の誤認識に影響しているのか?を確かめるために、Epoch 数を変更して再学習を行って、PYNQボードに実装して手書き数字の認識を確認した。今回は、その過程でVivado HLS で行った、精度の確認を書けなかったので、それを書いておく。

学習した重みとバイアスをC ヘッダ・ファイルとして出力し、Vivado HLS の mnist_conv_nn3_hlss_k_org の同じファイル名のヘッダ・ファイルと入れ替えた。
C シミュレーションを行った。結果を示す。
keras_mnist_cnn_69_180703.png

HW_ERROR_COUNT = 26, SW_ERROR_COUNT = 25


ハードウェアの間違いが 26 個なので、精度は (1000 - 26) / 1000 x 100 = 97.4 % で、ソフトウェアの間違いは 25 個なので、精度は (1000 - 25) / 1000 x 100 = 97.5 % だった。

MNIST のCNN の各層の値域を見ると、全結合層 2 層目の最大、最小値が 21.3 と -23.7 程度なので、現在の 5 ビットでは足りない。5 ビットの範囲は +16 弱から -16 なので、値の範囲が足りない。
keras_mnist_cnn_70_180703.png

#define AFFINE_INTEGER_LEN 5

だが、

#define AFFINE_INTEGER_LEN 6

に変更した。こうすれば、 +32 弱から -32 までの値の範囲になる。
keras_mnist_cnn_71_180703.png

これで、C シミュレーションを行った。結果を示す。
keras_mnist_cnn_72_180703.png

HW_ERROR_COUNT = 22, SW_ERROR_COUNT = 25

でハードウェアの間違いが 22 個になった。ハードウェアの精度は (1000 - 22) / 1000 x 100 = 97.8 % となった。これで良いだろう。

今日はブログを 2 つ書く予定だったが、ワールドカップ・サッカーの日本 ー ベルギー戦が 2 - 0 で日本が勝っているので、応援するため、コレで終わりにする。日本頑張れ。。。後半22分。。。

(追記)
2 - 3 で負けました。残念ですが、善戦しました。。。
  1. 2018年07月03日 04:26 |
  2. PYNQ
  3. | トラックバック:0
  4. | コメント:0