FC2カウンター FPGAの部屋 keras_compressor を試してみる3
FC2ブログ

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

FPGAの部屋

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

keras_compressor を試してみる3

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

前回は、MNIST のトレーニングと圧縮、ファイン・チューニングを行った。今回は、各モデルを評価してみよう。

まずは、圧縮していない通常のモデルからやってみよう。
python3 evaluate.py model_raw.h5
keras_compressor_19_190227.png

ログを示す。

root@7552a77f8bdb:/srv/keras_compressor/example/mnist# python3 evaluate.py model_raw.h5
Using TensorFlow backend.
2019-02-27 11:09:05.645341: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         (None, 28, 28, 1)         0         
_________________________________________________________________
conv2d_1 (Conv2D)            (None, 26, 26, 32)        320       
_________________________________________________________________
dropout_1 (Dropout)          (None, 26, 26, 32)        0         
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 24, 24, 64)        18496     
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 12, 12, 64)        0         
_________________________________________________________________
dropout_2 (Dropout)          (None, 12, 12, 64)        0         
_________________________________________________________________
flatten_1 (Flatten)          (None, 9216)              0         
_________________________________________________________________
dense_1 (Dense)              (None, 128)               1179776   
_________________________________________________________________
dropout_3 (Dropout)          (None, 128)               0         
_________________________________________________________________
dense_2 (Dense)              (None, 10)                1290      
=================================================================
Total params: 1,199,882
Trainable params: 1,199,882
Non-trainable params: 0
_________________________________________________________________
[0.03550462917517871, 0.9909]


一番下の数値はロス、精度のようだ。

次に圧縮したモデルを評価してみよう。
python3 evaluate.py model_compressed.h5
keras_compressor_20_190227.png

ログを示す。

root@7552a77f8bdb:/srv/keras_compressor/example/mnist# python3 evaluate.py model_compressed.h5
Using TensorFlow backend.
2019-02-27 11:10:22.770433: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         (None, 28, 28, 1)         0         
_________________________________________________________________
conv2d_1 (FactorizedConv2DTu (None, 26, 26, 32)        114       
_________________________________________________________________
dropout_1 (Dropout)          (None, 26, 26, 32)        0         
_________________________________________________________________
conv2d_2 (FactorizedConv2DTu (None, 24, 24, 64)        1939      
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 12, 12, 64)        0         
_________________________________________________________________
dropout_2 (Dropout)          (None, 12, 12, 64)        0         
_________________________________________________________________
flatten_1 (Flatten)          (None, 9216)              0         
_________________________________________________________________
dense_1 (FactorizedDense)    (None, 128)               37504     
_________________________________________________________________
dropout_3 (Dropout)          (None, 128)               0         
_________________________________________________________________
dense_2 (Dense)              (None, 10)                1290      
=================================================================
Total params: 40,847
Trainable params: 40,847
Non-trainable params: 0
_________________________________________________________________
[3.8010931224822997, 0.5504]


Total params: 1,199,882 からTotal params: 40,847 に減っている。パラメータは約 34 % に減っているが、精度は 0.9909 から 0.5504 に減っている。

最後にファイン・チューニング後のモデルを見てみよう。
python3 evaluate.py model_finetuned.h5
keras_compressor_21_190227.png

ログを示す。

root@7552a77f8bdb:/srv/keras_compressor/example/mnist# python3 evaluate.py model_finetuned.h5
Using TensorFlow backend.
2019-02-27 11:13:32.563043: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         (None, 28, 28, 1)         0         
_________________________________________________________________
conv2d_1 (FactorizedConv2DTu (None, 26, 26, 32)        114       
_________________________________________________________________
dropout_1 (Dropout)          (None, 26, 26, 32)        0         
_________________________________________________________________
conv2d_2 (FactorizedConv2DTu (None, 24, 24, 64)        1939      
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 12, 12, 64)        0         
_________________________________________________________________
dropout_2 (Dropout)          (None, 12, 12, 64)        0         
_________________________________________________________________
flatten_1 (Flatten)          (None, 9216)              0         
_________________________________________________________________
dense_1 (FactorizedDense)    (None, 128)               37504     
_________________________________________________________________
dropout_3 (Dropout)          (None, 128)               0         
_________________________________________________________________
dense_2 (Dense)              (None, 10)                1290      
=================================================================
Total params: 40,847
Trainable params: 40,847
Non-trainable params: 0
_________________________________________________________________
[0.07411974601857364, 0.9793]


パラメータの合計は圧縮したものと同じだが、精度は 0.9793 まで高くなった。
精度の差は 0.9909 - 0.9793 = 0.0116 となり、圧縮前より 1.16 % 小さいだけである。
  1. 2019年03月01日 05:03 |
  2. DNN
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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