FC2カウンター FPGAの部屋 ZYBOt のコースをKeras で学習した
FC2ブログ

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

FPGAの部屋

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

ZYBOt のコースをKeras で学習した

ZYBOt のテスト用画像ファイルの作成(テスト・ファイルとラベル・ファイル)”の続き。

今まで作ってきたトレーニング・ファイルやラベル・ファイル、テスト・ファイルやラベル・ファイルを使用して、Keras で学習させた。

(2018/10/06 : 修正)画像を増やすスクリプトが間違っていたので、間違いを修正して学習をやり直しました。

まずは、course_line というディレクトリを作成し、その下にJupyter Notebook のファイルが入る course_nn2_line ディレクトリを作成した。そして、 train_course_run_image と train_course_run_label 、test_course_run_image と test_course_run_label と画像ファイルをロードする「ゼロから作るDeep Learning」のPython ファイルを使用した course_dataset.py が入っている dataset_course ディレクトリを作成した。
ZYBOt_Keras_21_180930

今までと同じネットワークで学習した。
ZYBOt_Keras_40_181006

学習画像での精度は 99.0 % だが、テスト画像での精度は 92.1 % だった。かなり離れてしまっている。

Train on 55350 samples, validate on 55800 samples
Epoch 1/3
55350/55350 [==============================] - 7s 134us/step - loss: 0.4229 - acc: 0.8291 - val_loss: 0.3622 - val_acc: 0.9065
Epoch 2/3
55350/55350 [==============================] - 7s 133us/step - loss: 0.0917 - acc: 0.9723 - val_loss: 0.4185 - val_acc: 0.9184
Epoch 3/3
55350/55350 [==============================] - 7s 135us/step - loss: 0.0459 - acc: 0.9871 - val_loss: 0.4027 - val_acc: 0.9240



グラフを示す。
ZYBOt_Keras_41_181006

モデルのサーマリを示す。

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_1 (Conv2D)            (None, 6, 52, 2)          52        
_________________________________________________________________
activation_1 (Activation)    (None, 6, 52, 2)          0         
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 3, 26, 2)          0         
_________________________________________________________________
flatten_1 (Flatten)          (None, 156)               0         
_________________________________________________________________
dense_1 (Dense)              (None, 100)               15700     
_________________________________________________________________
activation_2 (Activation)    (None, 100)               0         
_________________________________________________________________
dense_2 (Dense)              (None, 3)                 303       
_________________________________________________________________
activation_3 (Activation)    (None, 3)                 0         
=================================================================
Total params: 16,055
Trainable params: 16,055
Non-trainable params: 0


畳み込み層の統計情報を示す。

conv_layer_bias = [-0.47363704 -0.1307075 ]
np.max(conv_layer_weight) = 0.5713015794754028
np.min(conv_layer_weight) = -0.42728084325790405
np.max(abs_conv_layer_weight) = 0.5713015794754028
np.min(abs_conv_layer_weight) = 0.0053939069621264935
np.max(conv_layer_bias) = -0.1307075023651123
np.min(conv_layer_bias) = -0.47363704442977905
np.max(abs_conv_layer_bias) = 0.47363704442977905
np.min(abs_conv_layer_bias) = 0.1307075023651123
conv_output = (55800, 6, 52, 2)
np.std(conv_output) = 0.8600595593452454
np.max(conv_output) = 3.77016544342041
np.min(conv_output) = -2.09549617767334
np.max(abs_conv) = 3.77016544342041
np.min(abs_conv) = 6.556510925292969e-07


畳み込み層の重みとバイアスのグラフを示す。
ZYBOt_Keras_42_181006

全結合層1層目の統計情報を示す。

np.max(dence_layer1_weight) = 0.4407622218132019
np.min(dence_layer1_weight) = -0.46452072262763977
np.max(abs_dence_layer1_weight) = 0.46452072262763977
np.min(abs_dence_layer1_weight) = 2.4440741981379688e-06
np.max(dence_layer1_bias) = 0.2699412703514099
np.min(dence_layer1_bias) = -0.16888734698295593
np.max(abs_dence_layer1_bias) = 0.2699412703514099
np.min(abs_dence_layer1_bias) = 0.00015306042041629553
dence_layer1_output = (55800, 100)
np.std(dence_layer1_output) = 1.624572515487671
np.max(dence_layer1_output) = 10.883496284484863
np.min(dence_layer1_output) = -11.47065258026123
np.max(abs_dence_layer1_output) = 11.47065258026123
np.min(abs_dence_layer1_output) = 1.2665987014770508e-07


全結合層1層目の重みとバイアスのグラフを示す。
ZYBOt_Keras_43_181006

全結合2層目の統計情報を示す。

dence_layer2_bias = [ 0.04589511 -0.04674032 0.02472589]
np.max(dence_layer2_weight) = 0.995283305644989
np.min(dence_layer2_weight) = -1.0141152143478394
np.max(abs_dence_layer2_weight) = 1.0141152143478394
np.min(abs_dence_layer2_weight) = 0.0014004269614815712
np.max(dence_layer2_bias) = 0.04589511454105377
np.min(dence_layer2_bias) = -0.046740319579839706
np.max(abs_dence_layer2_bias) = 0.046740319579839706
np.min(abs_dence_layer2_bias) = 0.024725893512368202
dence_layer2_output = (55800, 3)
np.std(dence_layer2_output) = 7.085215091705322
np.max(dence_layer2_output) = 31.220308303833008
np.min(dence_layer2_output) = -24.410385131835938
np.max(abs_dence_layer2_output) = 31.220308303833008
np.min(abs_dence_layer2_output) = 1.2490898370742798e-05


全結合2層目の重みとバイアスのグラフを示す。
ZYBOt_Keras_44_181006

各層の重みやバイアスの C ヘッダ・ファイルを出力し、1000個のテスト画像を出力した C ヘッダ・ファイル course_line_data.h を出力した。
ZYBOt_Keras_27_180930
  1. 2018年09月30日 04:46 |
  2. Zybot
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/4316-7fac2bca
この記事にトラックバックする(FC2ブログユーザー)