”
Kerasを使用したMNIST CNNで手書き文字認識7(特徴マップが3個のMNISTのCNNを再学習)”の続き。
前回は、過学習が手書き数字の誤認識に影響しているのか?を確かめるために、Epoch 数を変更して再学習を行って、PYNQボードに実装して手書き数字の認識を確認した。今回は、その過程でVivado HLS で行った、精度の確認を書けなかったので、それを書いておく。
学習した重みとバイアスをC ヘッダ・ファイルとして出力し、Vivado HLS の mnist_conv_nn3_hlss_k_org の同じファイル名のヘッダ・ファイルと入れ替えた。
C シミュレーションを行った。結果を示す。

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 なので、値の範囲が足りない。

#define AFFINE_INTEGER_LEN 5
だが、
#define AFFINE_INTEGER_LEN 6
に変更した。こうすれば、 +32 弱から -32 までの値の範囲になる。

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

HW_ERROR_COUNT = 22, SW_ERROR_COUNT = 25
でハードウェアの間違いが 22 個になった。ハードウェアの精度は (1000 - 22) / 1000 x 100 = 97.8 % となった。これで良いだろう。
今日はブログを 2 つ書く予定だったが、ワールドカップ・サッカーの日本 ー ベルギー戦が 2 - 0 で日本が勝っているので、応援するため、コレで終わりにする。日本頑張れ。。。後半22分。。。
(追記)
2 - 3 で負けました。残念ですが、善戦しました。。。
- 2018年07月03日 04:26 |
- PYNQ
-
| トラックバック:0
-
| コメント:0