FC2カウンター FPGAの部屋 2019年02月28日
FC2ブログ

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

FPGAの部屋

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

keras_compressor を試してみる2

keras_compressor を試してみる1”の続き。

前回は、Distiller の次は、keras_compressor を試してみたいということで、Docker のビルドから起動、git clone と環境整備を行った。今回は、MNIST のトレーニングと圧縮、ファイン・チューニングを行う。

まずは、keras_compressor の examples/mnist ディレクトリに移動して、トレーニングを行うのだが、epoch 数が 100 だと終わらないので、10 に変更した。
cd example/mnist/
vim train.py

keras_compressor_10_190226.png

python train.py
でトレーニングを行った。test_accuracy は 0.9909 だった。
keras_compressor_11_190226.png

ログを示す。

root@7552a77f8bdb:/srv/keras_compressor/example/mnist# python train.py 
Using TensorFlow backend.
Downloading data from https://s3.amazonaws.com/img-datasets/mnist.npz
11493376/11490434 [==============================] - 3s 0us/step
11501568/11490434 [==============================] - 3s 0us/step
Train on 60000 samples, validate on 10000 samples
Epoch 1/10
2019-02-26 12:21:58.576138: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
60000/60000 [==============================] - 113s 2ms/step - loss: 0.2448 - acc: 0.9252 - val_loss: 0.0556 - val_acc: 0.9822
Epoch 2/10
60000/60000 [==============================] - 114s 2ms/step - loss: 0.0871 - acc: 0.9740 - val_loss: 0.0396 - val_acc: 0.9864
Epoch 3/10
60000/60000 [==============================] - 117s 2ms/step - loss: 0.0661 - acc: 0.9807 - val_loss: 0.0361 - val_acc: 0.9880
Epoch 4/10
60000/60000 [==============================] - 124s 2ms/step - loss: 0.0594 - acc: 0.9821 - val_loss: 0.0345 - val_acc: 0.9889
Epoch 5/10
60000/60000 [==============================] - 118s 2ms/step - loss: 0.0536 - acc: 0.9843 - val_loss: 0.0353 - val_acc: 0.9892
Epoch 6/10
60000/60000 [==============================] - 119s 2ms/step - loss: 0.0514 - acc: 0.9854 - val_loss: 0.0337 - val_acc: 0.9888
Epoch 7/10
60000/60000 [==============================] - 118s 2ms/step - loss: 0.0535 - acc: 0.9842 - val_loss: 0.0349 - val_acc: 0.9890
Epoch 8/10
60000/60000 [==============================] - 118s 2ms/step - loss: 0.0530 - acc: 0.9850 - val_loss: 0.0318 - val_acc: 0.9895
Epoch 9/10
60000/60000 [==============================] - 118s 2ms/step - loss: 0.0543 - acc: 0.9844 - val_loss: 0.0341 - val_acc: 0.9901
Epoch 10/10
60000/60000 [==============================] - 118s 2ms/step - loss: 0.0551 - acc: 0.9846 - val_loss: 0.0355 - val_acc: 0.9909
10000/10000 [==============================] - 5s 473us/step
('test accuracy: ', 0.9909)


なお、トレーニングの終了時に model_raw.h5 が生成された。

次に、圧縮を行った。
python compress.py
を実行するとエラーになった。
keras_compressor_12_190226.png

python3 compress.py
のようだが、こちらも

TypeError: 'NoneType' object is not callable

エラーだった。
keras_compressor_13_190226.png

だが、もう一度、
python3 compress.py
を実行すると正常に通ってしまった。
keras_compressor_14_190226.png

検索すると”TypeError: 'NoneType' object is not callableとエラーが発生した場合”が引っかかった。
それによると、学習させるスクリプトにバックエンドの追加と処理の終了時に

backend.clear_session()

呼び出すそうだ。
keras_compressor_15_190226.png

もう一度、
python3 compress.py
を実行すると通った。
keras_compressor_16_190226.png

圧縮では、 model_compressed.h5 が生成された。

次にファイン・チューニングを行った。
最初に、また epoch 数が多いので 10 個に変更した。
vim finetune.py
keras_compressor_17_190226.png

python3 finetune.py
keras_compressor_18_190226.png

ログを示す。

root@7552a77f8bdb:/srv/keras_compressor/example/mnist# python3 finetune.py
Using TensorFlow backend.
2019-02-26 13:19:58.359630: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
Train on 60000 samples, validate on 10000 samples
Epoch 1/10
60000/60000 [==============================] - 52s 867us/step - loss: 0.3731 - acc: 0.8887 - val_loss: 0.1206 - val_acc: 0.9643
Epoch 2/10
60000/60000 [==============================] - 52s 864us/step - loss: 0.1599 - acc: 0.9554 - val_loss: 0.0921 - val_acc: 0.9722
Epoch 3/10
60000/60000 [==============================] - 52s 862us/step - loss: 0.1333 - acc: 0.9626 - val_loss: 0.0773 - val_acc: 0.9769
Epoch 4/10
60000/60000 [==============================] - 52s 864us/step - loss: 0.1178 - acc: 0.9670 - val_loss: 0.0797 - val_acc: 0.9769
Epoch 5/10
60000/60000 [==============================] - 52s 867us/step - loss: 0.1074 - acc: 0.9703 - val_loss: 0.0770 - val_acc: 0.9766
Epoch 6/10
60000/60000 [==============================] - 52s 863us/step - loss: 0.0986 - acc: 0.9725 - val_loss: 0.0622 - val_acc: 0.9810
Epoch 7/10
60000/60000 [==============================] - 52s 869us/step - loss: 0.0958 - acc: 0.9729 - val_loss: 0.0650 - val_acc: 0.9813
Epoch 8/10
60000/60000 [==============================] - 52s 865us/step - loss: 0.0930 - acc: 0.9740 - val_loss: 0.0644 - val_acc: 0.9792
Epoch 9/10
60000/60000 [==============================] - 52s 865us/step - loss: 0.0875 - acc: 0.9756 - val_loss: 0.0607 - val_acc: 0.9829
Epoch 10/10
60000/60000 [==============================] - 52s 864us/step - loss: 0.0835 - acc: 0.9770 - val_loss: 0.0741 - val_acc: 0.
10000/10000 [==============================] - 2s 202us/step
test accuracy:  0.9793


ファイン・チューニングでは、model_finetuned.h5 が生成された。
  1. 2019年02月28日 04:30 |
  2. DNN
  3. | トラックバック:0
  4. | コメント:0