Keras での重みクラスタリングの例

TensorFlow.orgで表示 Google Colabで実行 GitHub でソースを表示 ノートブックをダウンロード

概要

TensorFlow Model Optimization ツールキットの一部である重みクラスタリングのエンドツーエンドの例へようこそ。

その他のページ

重みクラスタリングの紹介、およびクラスタリングを使用すべきかどうかの判定(サポート情報も含む)については、概要ページをご覧ください。

ユースケースに合った API を素早く特定するには(16 個のクラスタでモデルを完全クラスタ化するケースを超える内容)、総合ガイドをご覧ください。

内容

チュートリアルでは、次について説明しています。

  1. MNIST データセットの tf.keras モデルを最初からトレーニングする
  2. 重みクラスタリング API を適用してモデルを微調整し、精度を確認する
  3. クラスタリングによって 6 倍小さな TF および TFLite モデルを作成する
  4. 重みクラスタリングとポストトレーニング量子化を組み合わせて、8 倍小さな TFLite モデルを作成する
  5. TF から TFLite への精度の永続性を確認する

セットアップ

この Jupyter ノートブックは、ローカルの virtualenv または Colab で実行できます。依存関係のセットアップに関する詳細は、インストールガイドをご覧ください。

 pip install -q tensorflow-model-optimization
import tensorflow as tf
from tensorflow import keras

import numpy as np
import tempfile
import zipfile
import os

クラスタを使用せずに、MNIST の tf.keras モデルをトレーニングする

# Load MNIST dataset
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

# Normalize the input image so that each pixel value is between 0 to 1.
train_images = train_images / 255.0
test_images  = test_images / 255.0

# Define the model architecture.
model = keras.Sequential([
    keras.layers.InputLayer(input_shape=(28, 28)),
    keras.layers.Reshape(target_shape=(28, 28, 1)),
    keras.layers.Conv2D(filters=12, kernel_size=(3, 3), activation=tf.nn.relu),
    keras.layers.MaxPooling2D(pool_size=(2, 2)),
    keras.layers.Flatten(),
    keras.layers.Dense(10)
])

# Train the digit classification model
model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])

model.fit(
    train_images,
    train_labels,
    validation_split=0.1,
    epochs=10
)
Epoch 1/10
1/1688 [..............................] - ETA: 1:09:26 - loss: 2.3776 - accuracy: 0.0938
24/1688 [..............................] - ETA: 3s - loss: 2.1879 - accuracy: 0.3025
49/1688 [..............................] - ETA: 3s - loss: 2.0258 - accuracy: 0.4017
74/1688 [>.............................] - ETA: 3s - loss: 1.8641 - accuracy: 0.4692
99/1688 [>.............................] - ETA: 3s - loss: 1.7198 - accuracy: 0.5192
124/1688 [=>............................] - ETA: 3s - loss: 1.6008 - accuracy: 0.5570
148/1688 [=>............................] - ETA: 3s - loss: 1.5053 - accuracy: 0.5860
173/1688 [==>...........................] - ETA: 3s - loss: 1.4205 - accuracy: 0.6109
198/1688 [==>...........................] - ETA: 3s - loss: 1.3480 - accuracy: 0.6318
222/1688 [==>...........................] - ETA: 3s - loss: 1.2872 - accuracy: 0.6491
247/1688 [===>..........................] - ETA: 2s - loss: 1.2321 - accuracy: 0.6645
272/1688 [===>..........................] - ETA: 2s - loss: 1.1834 - accuracy: 0.6781
298/1688 [====>.........................] - ETA: 2s - loss: 1.1383 - accuracy: 0.6906
323/1688 [====>.........................] - ETA: 2s - loss: 1.0996 - accuracy: 0.7013
349/1688 [=====>........................] - ETA: 2s - loss: 1.0634 - accuracy: 0.7113
375/1688 [=====>........................] - ETA: 2s - loss: 1.0304 - accuracy: 0.7203
399/1688 [======>.......................] - ETA: 2s - loss: 1.0028 - accuracy: 0.7279
423/1688 [======>.......................] - ETA: 2s - loss: 0.9773 - accuracy: 0.7348
447/1688 [======>.......................] - ETA: 2s - loss: 0.9539 - accuracy: 0.7412
471/1688 [=======>......................] - ETA: 2s - loss: 0.9323 - accuracy: 0.7470
495/1688 [=======>......................] - ETA: 2s - loss: 0.9121 - accuracy: 0.7524
519/1688 [========>.....................] - ETA: 2s - loss: 0.8932 - accuracy: 0.7575
545/1688 [========>.....................] - ETA: 2s - loss: 0.8742 - accuracy: 0.7626
571/1688 [=========>....................] - ETA: 2s - loss: 0.8563 - accuracy: 0.7674
596/1688 [=========>....................] - ETA: 2s - loss: 0.8402 - accuracy: 0.7717
622/1688 [==========>...................] - ETA: 2s - loss: 0.8244 - accuracy: 0.7759
647/1688 [==========>...................] - ETA: 2s - loss: 0.8102 - accuracy: 0.7797
672/1688 [==========>...................] - ETA: 2s - loss: 0.7967 - accuracy: 0.7833
696/1688 [===========>..................] - ETA: 2s - loss: 0.7844 - accuracy: 0.7867
721/1688 [===========>..................] - ETA: 1s - loss: 0.7721 - accuracy: 0.7899
745/1688 [============>.................] - ETA: 1s - loss: 0.7610 - accuracy: 0.7929
770/1688 [============>.................] - ETA: 1s - loss: 0.7499 - accuracy: 0.7959
795/1688 [=============>................] - ETA: 1s - loss: 0.7393 - accuracy: 0.7987
820/1688 [=============>................] - ETA: 1s - loss: 0.7291 - accuracy: 0.8014
845/1688 [==============>...............] - ETA: 1s - loss: 0.7194 - accuracy: 0.8040
870/1688 [==============>...............] - ETA: 1s - loss: 0.7101 - accuracy: 0.8065
895/1688 [==============>...............] - ETA: 1s - loss: 0.7011 - accuracy: 0.8089
920/1688 [===============>..............] - ETA: 1s - loss: 0.6925 - accuracy: 0.8112
945/1688 [===============>..............] - ETA: 1s - loss: 0.6843 - accuracy: 0.8134
970/1688 [================>.............] - ETA: 1s - loss: 0.6764 - accuracy: 0.8155
995/1688 [================>.............] - ETA: 1s - loss: 0.6687 - accuracy: 0.8176
1020/1688 [=================>............] - ETA: 1s - loss: 0.6613 - accuracy: 0.8195
1045/1688 [=================>............] - ETA: 1s - loss: 0.6542 - accuracy: 0.8215
1070/1688 [==================>...........] - ETA: 1s - loss: 0.6473 - accuracy: 0.8233
1095/1688 [==================>...........] - ETA: 1s - loss: 0.6407 - accuracy: 0.8251
1121/1688 [==================>...........] - ETA: 1s - loss: 0.6340 - accuracy: 0.8269
1146/1688 [===================>..........] - ETA: 1s - loss: 0.6278 - accuracy: 0.8285
1171/1688 [===================>..........] - ETA: 1s - loss: 0.6218 - accuracy: 0.8302
1195/1688 [====================>.........] - ETA: 1s - loss: 0.6161 - accuracy: 0.8317
1220/1688 [====================>.........] - ETA: 0s - loss: 0.6105 - accuracy: 0.8332
1246/1688 [=====================>........] - ETA: 0s - loss: 0.6047 - accuracy: 0.8347
1271/1688 [=====================>........] - ETA: 0s - loss: 0.5994 - accuracy: 0.8362
1297/1688 [======================>.......] - ETA: 0s - loss: 0.5940 - accuracy: 0.8376
1322/1688 [======================>.......] - ETA: 0s - loss: 0.5889 - accuracy: 0.8390
1346/1688 [======================>.......] - ETA: 0s - loss: 0.5842 - accuracy: 0.8402
1371/1688 [=======================>......] - ETA: 0s - loss: 0.5794 - accuracy: 0.8415
1396/1688 [=======================>......] - ETA: 0s - loss: 0.5748 - accuracy: 0.8427
1421/1688 [========================>.....] - ETA: 0s - loss: 0.5702 - accuracy: 0.8439
1447/1688 [========================>.....] - ETA: 0s - loss: 0.5656 - accuracy: 0.8452
1472/1688 [=========================>....] - ETA: 0s - loss: 0.5613 - accuracy: 0.8463
1497/1688 [=========================>....] - ETA: 0s - loss: 0.5571 - accuracy: 0.8474
1522/1688 [==========================>...] - ETA: 0s - loss: 0.5530 - accuracy: 0.8485
1547/1688 [==========================>...] - ETA: 0s - loss: 0.5490 - accuracy: 0.8496
1572/1688 [==========================>...] - ETA: 0s - loss: 0.5451 - accuracy: 0.8506
1597/1688 [===========================>..] - ETA: 0s - loss: 0.5413 - accuracy: 0.8516
1621/1688 [===========================>..] - ETA: 0s - loss: 0.5377 - accuracy: 0.8526
1646/1688 [============================>.] - ETA: 0s - loss: 0.5340 - accuracy: 0.8536
1671/1688 [============================>.] - ETA: 0s - loss: 0.5304 - accuracy: 0.8545
1688/1688 [==============================] - 7s 2ms/step - loss: 0.5279 - accuracy: 0.8552 - val_loss: 0.1275 - val_accuracy: 0.9650
Epoch 2/10

   1/1688 [..............................] - ETA: 4s - loss: 0.1092 - accuracy: 0.9688
26/1688 [..............................] - ETA: 3s - loss: 0.1372 - accuracy: 0.9518
50/1688 [..............................] - ETA: 3s - loss: 0.1414 - accuracy: 0.9538
74/1688 [>.............................] - ETA: 3s - loss: 0.1477 - accuracy: 0.9542
99/1688 [>.............................] - ETA: 3s - loss: 0.1492 - accuracy: 0.9550
124/1688 [=>............................] - ETA: 3s - loss: 0.1496 - accuracy: 0.9554
149/1688 [=>............................] - ETA: 3s - loss: 0.1491 - accuracy: 0.9559
174/1688 [==>...........................] - ETA: 3s - loss: 0.1482 - accuracy: 0.9564
200/1688 [==>...........................] - ETA: 3s - loss: 0.1472 - accuracy: 0.9569
225/1688 [==>...........................] - ETA: 3s - loss: 0.1468 - accuracy: 0.9572
250/1688 [===>..........................] - ETA: 2s - loss: 0.1464 - accuracy: 0.9575
276/1688 [===>..........................] - ETA: 2s - loss: 0.1461 - accuracy: 0.9578
302/1688 [====>.........................] - ETA: 2s - loss: 0.1459 - accuracy: 0.9580
327/1688 [====>.........................] - ETA: 2s - loss: 0.1457 - accuracy: 0.9581
352/1688 [=====>........................] - ETA: 2s - loss: 0.1455 - accuracy: 0.9583
377/1688 [=====>........................] - ETA: 2s - loss: 0.1451 - accuracy: 0.9586
402/1688 [======>.......................] - ETA: 2s - loss: 0.1447 - accuracy: 0.9588
426/1688 [======>.......................] - ETA: 2s - loss: 0.1444 - accuracy: 0.9590
451/1688 [=======>......................] - ETA: 2s - loss: 0.1442 - accuracy: 0.9591
476/1688 [=======>......................] - ETA: 2s - loss: 0.1439 - accuracy: 0.9593
501/1688 [=======>......................] - ETA: 2s - loss: 0.1438 - accuracy: 0.9594
526/1688 [========>.....................] - ETA: 2s - loss: 0.1436 - accuracy: 0.9595
551/1688 [========>.....................] - ETA: 2s - loss: 0.1434 - accuracy: 0.9595
576/1688 [=========>....................] - ETA: 2s - loss: 0.1432 - accuracy: 0.9596
601/1688 [=========>....................] - ETA: 2s - loss: 0.1430 - accuracy: 0.9597
625/1688 [==========>...................] - ETA: 2s - loss: 0.1428 - accuracy: 0.9598
650/1688 [==========>...................] - ETA: 2s - loss: 0.1426 - accuracy: 0.9598
676/1688 [===========>..................] - ETA: 2s - loss: 0.1423 - accuracy: 0.9599
702/1688 [===========>..................] - ETA: 2s - loss: 0.1420 - accuracy: 0.9600
727/1688 [===========>..................] - ETA: 1s - loss: 0.1418 - accuracy: 0.9601
753/1688 [============>.................] - ETA: 1s - loss: 0.1415 - accuracy: 0.9602
778/1688 [============>.................] - ETA: 1s - loss: 0.1412 - accuracy: 0.9602
803/1688 [=============>................] - ETA: 1s - loss: 0.1410 - accuracy: 0.9603
828/1688 [=============>................] - ETA: 1s - loss: 0.1408 - accuracy: 0.9604
854/1688 [==============>...............] - ETA: 1s - loss: 0.1405 - accuracy: 0.9604
879/1688 [==============>...............] - ETA: 1s - loss: 0.1403 - accuracy: 0.9605
904/1688 [===============>..............] - ETA: 1s - loss: 0.1400 - accuracy: 0.9606
929/1688 [===============>..............] - ETA: 1s - loss: 0.1398 - accuracy: 0.9606
954/1688 [===============>..............] - ETA: 1s - loss: 0.1395 - accuracy: 0.9607
979/1688 [================>.............] - ETA: 1s - loss: 0.1393 - accuracy: 0.9607
1004/1688 [================>.............] - ETA: 1s - loss: 0.1391 - accuracy: 0.9608
1029/1688 [=================>............] - ETA: 1s - loss: 0.1389 - accuracy: 0.9609
1054/1688 [=================>............] - ETA: 1s - loss: 0.1387 - accuracy: 0.9609
1078/1688 [==================>...........] - ETA: 1s - loss: 0.1384 - accuracy: 0.9610
1103/1688 [==================>...........] - ETA: 1s - loss: 0.1382 - accuracy: 0.9611
1128/1688 [===================>..........] - ETA: 1s - loss: 0.1380 - accuracy: 0.9611
1153/1688 [===================>..........] - ETA: 1s - loss: 0.1378 - accuracy: 0.9612
1178/1688 [===================>..........] - ETA: 1s - loss: 0.1376 - accuracy: 0.9612
1203/1688 [====================>.........] - ETA: 0s - loss: 0.1374 - accuracy: 0.9613
1228/1688 [====================>.........] - ETA: 0s - loss: 0.1372 - accuracy: 0.9613
1253/1688 [=====================>........] - ETA: 0s - loss: 0.1370 - accuracy: 0.9614
1278/1688 [=====================>........] - ETA: 0s - loss: 0.1368 - accuracy: 0.9614
1302/1688 [======================>.......] - ETA: 0s - loss: 0.1367 - accuracy: 0.9615
1327/1688 [======================>.......] - ETA: 0s - loss: 0.1365 - accuracy: 0.9615
1351/1688 [=======================>......] - ETA: 0s - loss: 0.1363 - accuracy: 0.9616
1376/1688 [=======================>......] - ETA: 0s - loss: 0.1361 - accuracy: 0.9616
1401/1688 [=======================>......] - ETA: 0s - loss: 0.1359 - accuracy: 0.9617
1426/1688 [========================>.....] - ETA: 0s - loss: 0.1357 - accuracy: 0.9617
1452/1688 [========================>.....] - ETA: 0s - loss: 0.1356 - accuracy: 0.9618
1477/1688 [=========================>....] - ETA: 0s - loss: 0.1354 - accuracy: 0.9618
1503/1688 [=========================>....] - ETA: 0s - loss: 0.1352 - accuracy: 0.9619
1529/1688 [==========================>...] - ETA: 0s - loss: 0.1350 - accuracy: 0.9619
1555/1688 [==========================>...] - ETA: 0s - loss: 0.1348 - accuracy: 0.9619
1580/1688 [===========================>..] - ETA: 0s - loss: 0.1347 - accuracy: 0.9620
1605/1688 [===========================>..] - ETA: 0s - loss: 0.1345 - accuracy: 0.9620
1630/1688 [===========================>..] - ETA: 0s - loss: 0.1343 - accuracy: 0.9621
1654/1688 [============================>.] - ETA: 0s - loss: 0.1342 - accuracy: 0.9621
1679/1688 [============================>.] - ETA: 0s - loss: 0.1340 - accuracy: 0.9621
1688/1688 [==============================] - 4s 2ms/step - loss: 0.1340 - accuracy: 0.9622 - val_loss: 0.0869 - val_accuracy: 0.9785
Epoch 3/10

   1/1688 [..............................] - ETA: 3s - loss: 0.0309 - accuracy: 1.0000
26/1688 [..............................] - ETA: 3s - loss: 0.0731 - accuracy: 0.9825
50/1688 [..............................] - ETA: 3s - loss: 0.0810 - accuracy: 0.9808
75/1688 [>.............................] - ETA: 3s - loss: 0.0850 - accuracy: 0.9792
100/1688 [>.............................] - ETA: 3s - loss: 0.0877 - accuracy: 0.9780
125/1688 [=>............................] - ETA: 3s - loss: 0.0884 - accuracy: 0.9776
150/1688 [=>............................] - ETA: 3s - loss: 0.0889 - accuracy: 0.9772
174/1688 [==>...........................] - ETA: 3s - loss: 0.0897 - accuracy: 0.9767
199/1688 [==>...........................] - ETA: 3s - loss: 0.0902 - accuracy: 0.9762
224/1688 [==>...........................] - ETA: 2s - loss: 0.0905 - accuracy: 0.9758
249/1688 [===>..........................] - ETA: 2s - loss: 0.0908 - accuracy: 0.9753
274/1688 [===>..........................] - ETA: 2s - loss: 0.0911 - accuracy: 0.9750
299/1688 [====>.........................] - ETA: 2s - loss: 0.0915 - accuracy: 0.9747
322/1688 [====>.........................] - ETA: 2s - loss: 0.0918 - accuracy: 0.9745
348/1688 [=====>........................] - ETA: 2s - loss: 0.0920 - accuracy: 0.9743
373/1688 [=====>........................] - ETA: 2s - loss: 0.0921 - accuracy: 0.9742
398/1688 [======>.......................] - ETA: 2s - loss: 0.0922 - accuracy: 0.9740
423/1688 [======>.......................] - ETA: 2s - loss: 0.0923 - accuracy: 0.9739
448/1688 [======>.......................] - ETA: 2s - loss: 0.0923 - accuracy: 0.9738
473/1688 [=======>......................] - ETA: 2s - loss: 0.0923 - accuracy: 0.9737
498/1688 [=======>......................] - ETA: 2s - loss: 0.0924 - accuracy: 0.9736
523/1688 [========>.....................] - ETA: 2s - loss: 0.0924 - accuracy: 0.9736
548/1688 [========>.....................] - ETA: 2s - loss: 0.0924 - accuracy: 0.9735
573/1688 [=========>....................] - ETA: 2s - loss: 0.0925 - accuracy: 0.9735
597/1688 [=========>....................] - ETA: 2s - loss: 0.0925 - accuracy: 0.9734
621/1688 [==========>...................] - ETA: 2s - loss: 0.0925 - accuracy: 0.9734
645/1688 [==========>...................] - ETA: 2s - loss: 0.0926 - accuracy: 0.9733
670/1688 [==========>...................] - ETA: 2s - loss: 0.0927 - accuracy: 0.9733
695/1688 [===========>..................] - ETA: 2s - loss: 0.0928 - accuracy: 0.9732
720/1688 [===========>..................] - ETA: 1s - loss: 0.0929 - accuracy: 0.9732
744/1688 [============>.................] - ETA: 1s - loss: 0.0929 - accuracy: 0.9731
768/1688 [============>.................] - ETA: 1s - loss: 0.0930 - accuracy: 0.9731
792/1688 [=============>................] - ETA: 1s - loss: 0.0931 - accuracy: 0.9731
817/1688 [=============>................] - ETA: 1s - loss: 0.0932 - accuracy: 0.9730
843/1688 [=============>................] - ETA: 1s - loss: 0.0932 - accuracy: 0.9730
867/1688 [==============>...............] - ETA: 1s - loss: 0.0932 - accuracy: 0.9730
891/1688 [==============>...............] - ETA: 1s - loss: 0.0932 - accuracy: 0.9730
915/1688 [===============>..............] - ETA: 1s - loss: 0.0932 - accuracy: 0.9730
939/1688 [===============>..............] - ETA: 1s - loss: 0.0932 - accuracy: 0.9730
964/1688 [================>.............] - ETA: 1s - loss: 0.0933 - accuracy: 0.9730
989/1688 [================>.............] - ETA: 1s - loss: 0.0933 - accuracy: 0.9730
1014/1688 [=================>............] - ETA: 1s - loss: 0.0933 - accuracy: 0.9730
1038/1688 [=================>............] - ETA: 1s - loss: 0.0933 - accuracy: 0.9730
1063/1688 [=================>............] - ETA: 1s - loss: 0.0934 - accuracy: 0.9729
1087/1688 [==================>...........] - ETA: 1s - loss: 0.0934 - accuracy: 0.9729
1112/1688 [==================>...........] - ETA: 1s - loss: 0.0934 - accuracy: 0.9729
1137/1688 [===================>..........] - ETA: 1s - loss: 0.0934 - accuracy: 0.9729
1161/1688 [===================>..........] - ETA: 1s - loss: 0.0934 - accuracy: 0.9729
1186/1688 [====================>.........] - ETA: 1s - loss: 0.0934 - accuracy: 0.9729
1210/1688 [====================>.........] - ETA: 0s - loss: 0.0934 - accuracy: 0.9729
1235/1688 [====================>.........] - ETA: 0s - loss: 0.0933 - accuracy: 0.9729
1259/1688 [=====================>........] - ETA: 0s - loss: 0.0933 - accuracy: 0.9729
1283/1688 [=====================>........] - ETA: 0s - loss: 0.0933 - accuracy: 0.9729
1309/1688 [======================>.......] - ETA: 0s - loss: 0.0933 - accuracy: 0.9729
1334/1688 [======================>.......] - ETA: 0s - loss: 0.0932 - accuracy: 0.9729
1359/1688 [=======================>......] - ETA: 0s - loss: 0.0932 - accuracy: 0.9730
1384/1688 [=======================>......] - ETA: 0s - loss: 0.0932 - accuracy: 0.9730
1409/1688 [========================>.....] - ETA: 0s - loss: 0.0932 - accuracy: 0.9730
1434/1688 [========================>.....] - ETA: 0s - loss: 0.0932 - accuracy: 0.9730
1459/1688 [========================>.....] - ETA: 0s - loss: 0.0931 - accuracy: 0.9730
1484/1688 [=========================>....] - ETA: 0s - loss: 0.0931 - accuracy: 0.9730
1508/1688 [=========================>....] - ETA: 0s - loss: 0.0931 - accuracy: 0.9730
1532/1688 [==========================>...] - ETA: 0s - loss: 0.0930 - accuracy: 0.9730
1558/1688 [==========================>...] - ETA: 0s - loss: 0.0930 - accuracy: 0.9730
1583/1688 [===========================>..] - ETA: 0s - loss: 0.0929 - accuracy: 0.9730
1608/1688 [===========================>..] - ETA: 0s - loss: 0.0929 - accuracy: 0.9731
1633/1688 [============================>.] - ETA: 0s - loss: 0.0929 - accuracy: 0.9731
1658/1688 [============================>.] - ETA: 0s - loss: 0.0928 - accuracy: 0.9731
1683/1688 [============================>.] - ETA: 0s - loss: 0.0928 - accuracy: 0.9731
1688/1688 [==============================] - 4s 2ms/step - loss: 0.0928 - accuracy: 0.9731 - val_loss: 0.0747 - val_accuracy: 0.9800
Epoch 4/10

   1/1688 [..............................] - ETA: 3s - loss: 0.0319 - accuracy: 1.0000
25/1688 [..............................] - ETA: 3s - loss: 0.0613 - accuracy: 0.9802
49/1688 [..............................] - ETA: 3s - loss: 0.0678 - accuracy: 0.9768
74/1688 [>.............................] - ETA: 3s - loss: 0.0711 - accuracy: 0.9755
99/1688 [>.............................] - ETA: 3s - loss: 0.0722 - accuracy: 0.9755
124/1688 [=>............................] - ETA: 3s - loss: 0.0728 - accuracy: 0.9754
148/1688 [=>............................] - ETA: 3s - loss: 0.0732 - accuracy: 0.9754
173/1688 [==>...........................] - ETA: 3s - loss: 0.0736 - accuracy: 0.9756
198/1688 [==>...........................] - ETA: 3s - loss: 0.0742 - accuracy: 0.9756
223/1688 [==>...........................] - ETA: 3s - loss: 0.0747 - accuracy: 0.9757
248/1688 [===>..........................] - ETA: 2s - loss: 0.0752 - accuracy: 0.9756
273/1688 [===>..........................] - ETA: 2s - loss: 0.0756 - accuracy: 0.9756
297/1688 [====>.........................] - ETA: 2s - loss: 0.0759 - accuracy: 0.9756
322/1688 [====>.........................] - ETA: 2s - loss: 0.0762 - accuracy: 0.9756
346/1688 [=====>........................] - ETA: 2s - loss: 0.0763 - accuracy: 0.9756
371/1688 [=====>........................] - ETA: 2s - loss: 0.0764 - accuracy: 0.9756
395/1688 [======>.......................] - ETA: 2s - loss: 0.0765 - accuracy: 0.9756
420/1688 [======>.......................] - ETA: 2s - loss: 0.0766 - accuracy: 0.9757
444/1688 [======>.......................] - ETA: 2s - loss: 0.0765 - accuracy: 0.9757
469/1688 [=======>......................] - ETA: 2s - loss: 0.0765 - accuracy: 0.9758
493/1688 [=======>......................] - ETA: 2s - loss: 0.0765 - accuracy: 0.9758
517/1688 [========>.....................] - ETA: 2s - loss: 0.0766 - accuracy: 0.9758
541/1688 [========>.....................] - ETA: 2s - loss: 0.0766 - accuracy: 0.9759
566/1688 [=========>....................] - ETA: 2s - loss: 0.0766 - accuracy: 0.9759
591/1688 [=========>....................] - ETA: 2s - loss: 0.0766 - accuracy: 0.9759
616/1688 [=========>....................] - ETA: 2s - loss: 0.0767 - accuracy: 0.9760
641/1688 [==========>...................] - ETA: 2s - loss: 0.0766 - accuracy: 0.9760
666/1688 [==========>...................] - ETA: 2s - loss: 0.0766 - accuracy: 0.9761
691/1688 [===========>..................] - ETA: 2s - loss: 0.0765 - accuracy: 0.9761
716/1688 [===========>..................] - ETA: 2s - loss: 0.0765 - accuracy: 0.9761
741/1688 [============>.................] - ETA: 1s - loss: 0.0764 - accuracy: 0.9762
765/1688 [============>.................] - ETA: 1s - loss: 0.0764 - accuracy: 0.9762
789/1688 [=============>................] - ETA: 1s - loss: 0.0763 - accuracy: 0.9762
813/1688 [=============>................] - ETA: 1s - loss: 0.0763 - accuracy: 0.9762
838/1688 [=============>................] - ETA: 1s - loss: 0.0763 - accuracy: 0.9763
862/1688 [==============>...............] - ETA: 1s - loss: 0.0762 - accuracy: 0.9763
888/1688 [==============>...............] - ETA: 1s - loss: 0.0762 - accuracy: 0.9763
913/1688 [===============>..............] - ETA: 1s - loss: 0.0762 - accuracy: 0.9763
937/1688 [===============>..............] - ETA: 1s - loss: 0.0762 - accuracy: 0.9764
962/1688 [================>.............] - ETA: 1s - loss: 0.0762 - accuracy: 0.9764
987/1688 [================>.............] - ETA: 1s - loss: 0.0762 - accuracy: 0.9764
1012/1688 [================>.............] - ETA: 1s - loss: 0.0762 - accuracy: 0.9764
1037/1688 [=================>............] - ETA: 1s - loss: 0.0762 - accuracy: 0.9764
1062/1688 [=================>............] - ETA: 1s - loss: 0.0762 - accuracy: 0.9765
1086/1688 [==================>...........] - ETA: 1s - loss: 0.0762 - accuracy: 0.9765
1111/1688 [==================>...........] - ETA: 1s - loss: 0.0762 - accuracy: 0.9765
1136/1688 [===================>..........] - ETA: 1s - loss: 0.0761 - accuracy: 0.9765
1161/1688 [===================>..........] - ETA: 1s - loss: 0.0761 - accuracy: 0.9766
1186/1688 [====================>.........] - ETA: 1s - loss: 0.0761 - accuracy: 0.9766
1211/1688 [====================>.........] - ETA: 0s - loss: 0.0761 - accuracy: 0.9766
1236/1688 [====================>.........] - ETA: 0s - loss: 0.0760 - accuracy: 0.9766
1260/1688 [=====================>........] - ETA: 0s - loss: 0.0760 - accuracy: 0.9767
1284/1688 [=====================>........] - ETA: 0s - loss: 0.0760 - accuracy: 0.9767
1309/1688 [======================>.......] - ETA: 0s - loss: 0.0759 - accuracy: 0.9767
1333/1688 [======================>.......] - ETA: 0s - loss: 0.0759 - accuracy: 0.9768
1357/1688 [=======================>......] - ETA: 0s - loss: 0.0759 - accuracy: 0.9768
1381/1688 [=======================>......] - ETA: 0s - loss: 0.0758 - accuracy: 0.9768
1405/1688 [=======================>......] - ETA: 0s - loss: 0.0758 - accuracy: 0.9768
1430/1688 [========================>.....] - ETA: 0s - loss: 0.0758 - accuracy: 0.9769
1456/1688 [========================>.....] - ETA: 0s - loss: 0.0757 - accuracy: 0.9769
1481/1688 [=========================>....] - ETA: 0s - loss: 0.0757 - accuracy: 0.9769
1505/1688 [=========================>....] - ETA: 0s - loss: 0.0757 - accuracy: 0.9770
1529/1688 [==========================>...] - ETA: 0s - loss: 0.0757 - accuracy: 0.9770
1553/1688 [==========================>...] - ETA: 0s - loss: 0.0756 - accuracy: 0.9770
1577/1688 [===========================>..] - ETA: 0s - loss: 0.0756 - accuracy: 0.9770
1601/1688 [===========================>..] - ETA: 0s - loss: 0.0756 - accuracy: 0.9770
1625/1688 [===========================>..] - ETA: 0s - loss: 0.0756 - accuracy: 0.9771
1649/1688 [============================>.] - ETA: 0s - loss: 0.0756 - accuracy: 0.9771
1674/1688 [============================>.] - ETA: 0s - loss: 0.0755 - accuracy: 0.9771
1688/1688 [==============================] - 4s 2ms/step - loss: 0.0755 - accuracy: 0.9771 - val_loss: 0.0706 - val_accuracy: 0.9820
Epoch 5/10

   1/1688 [..............................] - ETA: 4s - loss: 0.0441 - accuracy: 0.9688
26/1688 [..............................] - ETA: 3s - loss: 0.0566 - accuracy: 0.9850
51/1688 [..............................] - ETA: 3s - loss: 0.0549 - accuracy: 0.9864
76/1688 [>.............................] - ETA: 3s - loss: 0.0536 - accuracy: 0.9867
101/1688 [>.............................] - ETA: 3s - loss: 0.0533 - accuracy: 0.9866
126/1688 [=>............................] - ETA: 3s - loss: 0.0532 - accuracy: 0.9863
151/1688 [=>............................] - ETA: 3s - loss: 0.0542 - accuracy: 0.9858
175/1688 [==>...........................] - ETA: 3s - loss: 0.0550 - accuracy: 0.9854
200/1688 [==>...........................] - ETA: 3s - loss: 0.0556 - accuracy: 0.9850
225/1688 [==>...........................] - ETA: 2s - loss: 0.0563 - accuracy: 0.9847
250/1688 [===>..........................] - ETA: 2s - loss: 0.0566 - accuracy: 0.9845
274/1688 [===>..........................] - ETA: 2s - loss: 0.0569 - accuracy: 0.9843
299/1688 [====>.........................] - ETA: 2s - loss: 0.0572 - accuracy: 0.9841
324/1688 [====>.........................] - ETA: 2s - loss: 0.0575 - accuracy: 0.9840
349/1688 [=====>........................] - ETA: 2s - loss: 0.0578 - accuracy: 0.9839
374/1688 [=====>........................] - ETA: 2s - loss: 0.0580 - accuracy: 0.9838
399/1688 [======>.......................] - ETA: 2s - loss: 0.0582 - accuracy: 0.9837
424/1688 [======>.......................] - ETA: 2s - loss: 0.0583 - accuracy: 0.9836
449/1688 [======>.......................] - ETA: 2s - loss: 0.0584 - accuracy: 0.9836
473/1688 [=======>......................] - ETA: 2s - loss: 0.0586 - accuracy: 0.9835
497/1688 [=======>......................] - ETA: 2s - loss: 0.0587 - accuracy: 0.9835
521/1688 [========>.....................] - ETA: 2s - loss: 0.0588 - accuracy: 0.9835
546/1688 [========>.....................] - ETA: 2s - loss: 0.0589 - accuracy: 0.9834
570/1688 [=========>....................] - ETA: 2s - loss: 0.0589 - accuracy: 0.9834
595/1688 [=========>....................] - ETA: 2s - loss: 0.0590 - accuracy: 0.9833
620/1688 [==========>...................] - ETA: 2s - loss: 0.0592 - accuracy: 0.9833
645/1688 [==========>...................] - ETA: 2s - loss: 0.0593 - accuracy: 0.9832
669/1688 [==========>...................] - ETA: 2s - loss: 0.0595 - accuracy: 0.9832
693/1688 [===========>..................] - ETA: 2s - loss: 0.0597 - accuracy: 0.9831
717/1688 [===========>..................] - ETA: 2s - loss: 0.0598 - accuracy: 0.9830
741/1688 [============>.................] - ETA: 1s - loss: 0.0600 - accuracy: 0.9830
766/1688 [============>.................] - ETA: 1s - loss: 0.0602 - accuracy: 0.9829
791/1688 [=============>................] - ETA: 1s - loss: 0.0603 - accuracy: 0.9829
816/1688 [=============>................] - ETA: 1s - loss: 0.0605 - accuracy: 0.9828
842/1688 [=============>................] - ETA: 1s - loss: 0.0607 - accuracy: 0.9827
867/1688 [==============>...............] - ETA: 1s - loss: 0.0608 - accuracy: 0.9827
892/1688 [==============>...............] - ETA: 1s - loss: 0.0609 - accuracy: 0.9826
917/1688 [===============>..............] - ETA: 1s - loss: 0.0611 - accuracy: 0.9826
942/1688 [===============>..............] - ETA: 1s - loss: 0.0612 - accuracy: 0.9825
967/1688 [================>.............] - ETA: 1s - loss: 0.0613 - accuracy: 0.9825
992/1688 [================>.............] - ETA: 1s - loss: 0.0613 - accuracy: 0.9825
1016/1688 [=================>............] - ETA: 1s - loss: 0.0614 - accuracy: 0.9824
1041/1688 [=================>............] - ETA: 1s - loss: 0.0615 - accuracy: 0.9824
1066/1688 [=================>............] - ETA: 1s - loss: 0.0615 - accuracy: 0.9824
1090/1688 [==================>...........] - ETA: 1s - loss: 0.0616 - accuracy: 0.9823
1115/1688 [==================>...........] - ETA: 1s - loss: 0.0616 - accuracy: 0.9823
1140/1688 [===================>..........] - ETA: 1s - loss: 0.0617 - accuracy: 0.9823
1165/1688 [===================>..........] - ETA: 1s - loss: 0.0617 - accuracy: 0.9823
1190/1688 [====================>.........] - ETA: 1s - loss: 0.0617 - accuracy: 0.9822
1214/1688 [====================>.........] - ETA: 0s - loss: 0.0617 - accuracy: 0.9822
1239/1688 [=====================>........] - ETA: 0s - loss: 0.0618 - accuracy: 0.9822
1264/1688 [=====================>........] - ETA: 0s - loss: 0.0618 - accuracy: 0.9822
1289/1688 [=====================>........] - ETA: 0s - loss: 0.0618 - accuracy: 0.9822
1313/1688 [======================>.......] - ETA: 0s - loss: 0.0619 - accuracy: 0.9821
1338/1688 [======================>.......] - ETA: 0s - loss: 0.0619 - accuracy: 0.9821
1363/1688 [=======================>......] - ETA: 0s - loss: 0.0620 - accuracy: 0.9821
1388/1688 [=======================>......] - ETA: 0s - loss: 0.0620 - accuracy: 0.9821
1414/1688 [========================>.....] - ETA: 0s - loss: 0.0621 - accuracy: 0.9821
1438/1688 [========================>.....] - ETA: 0s - loss: 0.0621 - accuracy: 0.9820
1463/1688 [=========================>....] - ETA: 0s - loss: 0.0621 - accuracy: 0.9820
1487/1688 [=========================>....] - ETA: 0s - loss: 0.0622 - accuracy: 0.9820
1512/1688 [=========================>....] - ETA: 0s - loss: 0.0622 - accuracy: 0.9820
1537/1688 [==========================>...] - ETA: 0s - loss: 0.0622 - accuracy: 0.9820
1562/1688 [==========================>...] - ETA: 0s - loss: 0.0623 - accuracy: 0.9819
1586/1688 [===========================>..] - ETA: 0s - loss: 0.0623 - accuracy: 0.9819
1610/1688 [===========================>..] - ETA: 0s - loss: 0.0624 - accuracy: 0.9819
1635/1688 [============================>.] - ETA: 0s - loss: 0.0624 - accuracy: 0.9819
1661/1688 [============================>.] - ETA: 0s - loss: 0.0625 - accuracy: 0.9819
1686/1688 [============================>.] - ETA: 0s - loss: 0.0625 - accuracy: 0.9819
1688/1688 [==============================] - 4s 2ms/step - loss: 0.0625 - accuracy: 0.9819 - val_loss: 0.0634 - val_accuracy: 0.9832
Epoch 6/10

   1/1688 [..............................] - ETA: 3s - loss: 0.0410 - accuracy: 0.9688
26/1688 [..............................] - ETA: 3s - loss: 0.0499 - accuracy: 0.9797
51/1688 [..............................] - ETA: 3s - loss: 0.0550 - accuracy: 0.9791
75/1688 [>.............................] - ETA: 3s - loss: 0.0579 - accuracy: 0.9788
100/1688 [>.............................] - ETA: 3s - loss: 0.0598 - accuracy: 0.9786
124/1688 [=>............................] - ETA: 3s - loss: 0.0607 - accuracy: 0.9787
147/1688 [=>............................] - ETA: 3s - loss: 0.0612 - accuracy: 0.9789
171/1688 [==>...........................] - ETA: 3s - loss: 0.0613 - accuracy: 0.9791
196/1688 [==>...........................] - ETA: 3s - loss: 0.0616 - accuracy: 0.9792
220/1688 [==>...........................] - ETA: 3s - loss: 0.0618 - accuracy: 0.9792
244/1688 [===>..........................] - ETA: 3s - loss: 0.0619 - accuracy: 0.9793
269/1688 [===>..........................] - ETA: 2s - loss: 0.0620 - accuracy: 0.9793
294/1688 [====>.........................] - ETA: 2s - loss: 0.0622 - accuracy: 0.9794
318/1688 [====>.........................] - ETA: 2s - loss: 0.0624 - accuracy: 0.9794
343/1688 [=====>........................] - ETA: 2s - loss: 0.0625 - accuracy: 0.9794
368/1688 [=====>........................] - ETA: 2s - loss: 0.0626 - accuracy: 0.9795
393/1688 [=====>........................] - ETA: 2s - loss: 0.0625 - accuracy: 0.9796
418/1688 [======>.......................] - ETA: 2s - loss: 0.0625 - accuracy: 0.9796
443/1688 [======>.......................] - ETA: 2s - loss: 0.0624 - accuracy: 0.9797
468/1688 [=======>......................] - ETA: 2s - loss: 0.0623 - accuracy: 0.9798
493/1688 [=======>......................] - ETA: 2s - loss: 0.0622 - accuracy: 0.9799
519/1688 [========>.....................] - ETA: 2s - loss: 0.0620 - accuracy: 0.9800
544/1688 [========>.....................] - ETA: 2s - loss: 0.0619 - accuracy: 0.9801
568/1688 [=========>....................] - ETA: 2s - loss: 0.0617 - accuracy: 0.9802
593/1688 [=========>....................] - ETA: 2s - loss: 0.0616 - accuracy: 0.9802
618/1688 [=========>....................] - ETA: 2s - loss: 0.0615 - accuracy: 0.9803
643/1688 [==========>...................] - ETA: 2s - loss: 0.0614 - accuracy: 0.9804
668/1688 [==========>...................] - ETA: 2s - loss: 0.0613 - accuracy: 0.9805
693/1688 [===========>..................] - ETA: 2s - loss: 0.0612 - accuracy: 0.9805
718/1688 [===========>..................] - ETA: 1s - loss: 0.0611 - accuracy: 0.9806
743/1688 [============>.................] - ETA: 1s - loss: 0.0610 - accuracy: 0.9806
768/1688 [============>.................] - ETA: 1s - loss: 0.0609 - accuracy: 0.9807
793/1688 [=============>................] - ETA: 1s - loss: 0.0608 - accuracy: 0.9808
817/1688 [=============>................] - ETA: 1s - loss: 0.0607 - accuracy: 0.9808
842/1688 [=============>................] - ETA: 1s - loss: 0.0606 - accuracy: 0.9809
868/1688 [==============>...............] - ETA: 1s - loss: 0.0605 - accuracy: 0.9809
893/1688 [==============>...............] - ETA: 1s - loss: 0.0604 - accuracy: 0.9810
918/1688 [===============>..............] - ETA: 1s - loss: 0.0603 - accuracy: 0.9810
943/1688 [===============>..............] - ETA: 1s - loss: 0.0602 - accuracy: 0.9811
969/1688 [================>.............] - ETA: 1s - loss: 0.0601 - accuracy: 0.9811
995/1688 [================>.............] - ETA: 1s - loss: 0.0601 - accuracy: 0.9812
1020/1688 [=================>............] - ETA: 1s - loss: 0.0600 - accuracy: 0.9812
1044/1688 [=================>............] - ETA: 1s - loss: 0.0599 - accuracy: 0.9812
1069/1688 [=================>............] - ETA: 1s - loss: 0.0599 - accuracy: 0.9813
1094/1688 [==================>...........] - ETA: 1s - loss: 0.0598 - accuracy: 0.9813
1119/1688 [==================>...........] - ETA: 1s - loss: 0.0597 - accuracy: 0.9813
1144/1688 [===================>..........] - ETA: 1s - loss: 0.0596 - accuracy: 0.9814
1169/1688 [===================>..........] - ETA: 1s - loss: 0.0596 - accuracy: 0.9814
1194/1688 [====================>.........] - ETA: 1s - loss: 0.0595 - accuracy: 0.9814
1219/1688 [====================>.........] - ETA: 0s - loss: 0.0594 - accuracy: 0.9815
1244/1688 [=====================>........] - ETA: 0s - loss: 0.0594 - accuracy: 0.9815
1269/1688 [=====================>........] - ETA: 0s - loss: 0.0593 - accuracy: 0.9815
1294/1688 [=====================>........] - ETA: 0s - loss: 0.0593 - accuracy: 0.9815
1319/1688 [======================>.......] - ETA: 0s - loss: 0.0592 - accuracy: 0.9816
1344/1688 [======================>.......] - ETA: 0s - loss: 0.0592 - accuracy: 0.9816
1370/1688 [=======================>......] - ETA: 0s - loss: 0.0591 - accuracy: 0.9816
1396/1688 [=======================>......] - ETA: 0s - loss: 0.0591 - accuracy: 0.9816
1422/1688 [========================>.....] - ETA: 0s - loss: 0.0590 - accuracy: 0.9817
1447/1688 [========================>.....] - ETA: 0s - loss: 0.0590 - accuracy: 0.9817
1471/1688 [=========================>....] - ETA: 0s - loss: 0.0589 - accuracy: 0.9817
1495/1688 [=========================>....] - ETA: 0s - loss: 0.0589 - accuracy: 0.9817
1519/1688 [=========================>....] - ETA: 0s - loss: 0.0588 - accuracy: 0.9818
1544/1688 [==========================>...] - ETA: 0s - loss: 0.0588 - accuracy: 0.9818
1569/1688 [==========================>...] - ETA: 0s - loss: 0.0588 - accuracy: 0.9818
1594/1688 [===========================>..] - ETA: 0s - loss: 0.0587 - accuracy: 0.9818
1618/1688 [===========================>..] - ETA: 0s - loss: 0.0587 - accuracy: 0.9818
1642/1688 [============================>.] - ETA: 0s - loss: 0.0587 - accuracy: 0.9818
1668/1688 [============================>.] - ETA: 0s - loss: 0.0587 - accuracy: 0.9819
1688/1688 [==============================] - 4s 2ms/step - loss: 0.0586 - accuracy: 0.9819 - val_loss: 0.0606 - val_accuracy: 0.9830
Epoch 7/10

   1/1688 [..............................] - ETA: 3s - loss: 0.1358 - accuracy: 0.9688
26/1688 [..............................] - ETA: 3s - loss: 0.0671 - accuracy: 0.9816
51/1688 [..............................] - ETA: 3s - loss: 0.0602 - accuracy: 0.9819
75/1688 [>.............................] - ETA: 3s - loss: 0.0578 - accuracy: 0.9822
100/1688 [>.............................] - ETA: 3s - loss: 0.0557 - accuracy: 0.9829
124/1688 [=>............................] - ETA: 3s - loss: 0.0539 - accuracy: 0.9836
148/1688 [=>............................] - ETA: 3s - loss: 0.0526 - accuracy: 0.9841
172/1688 [==>...........................] - ETA: 3s - loss: 0.0515 - accuracy: 0.9845
197/1688 [==>...........................] - ETA: 3s - loss: 0.0510 - accuracy: 0.9847
223/1688 [==>...........................] - ETA: 3s - loss: 0.0509 - accuracy: 0.9848
248/1688 [===>..........................] - ETA: 2s - loss: 0.0509 - accuracy: 0.9848
272/1688 [===>..........................] - ETA: 2s - loss: 0.0510 - accuracy: 0.9848
297/1688 [====>.........................] - ETA: 2s - loss: 0.0511 - accuracy: 0.9847
322/1688 [====>.........................] - ETA: 2s - loss: 0.0511 - accuracy: 0.9848
347/1688 [=====>........................] - ETA: 2s - loss: 0.0511 - accuracy: 0.9848
372/1688 [=====>........................] - ETA: 2s - loss: 0.0512 - accuracy: 0.9848
397/1688 [======>.......................] - ETA: 2s - loss: 0.0513 - accuracy: 0.9848
422/1688 [======>.......................] - ETA: 2s - loss: 0.0515 - accuracy: 0.9847
446/1688 [======>.......................] - ETA: 2s - loss: 0.0517 - accuracy: 0.9847
470/1688 [=======>......................] - ETA: 2s - loss: 0.0519 - accuracy: 0.9846
495/1688 [=======>......................] - ETA: 2s - loss: 0.0520 - accuracy: 0.9846
520/1688 [========>.....................] - ETA: 2s - loss: 0.0522 - accuracy: 0.9845
545/1688 [========>.....................] - ETA: 2s - loss: 0.0523 - accuracy: 0.9845
570/1688 [=========>....................] - ETA: 2s - loss: 0.0524 - accuracy: 0.9845
595/1688 [=========>....................] - ETA: 2s - loss: 0.0525 - accuracy: 0.9845
621/1688 [==========>...................] - ETA: 2s - loss: 0.0526 - accuracy: 0.9845
646/1688 [==========>...................] - ETA: 2s - loss: 0.0526 - accuracy: 0.9844
670/1688 [==========>...................] - ETA: 2s - loss: 0.0527 - accuracy: 0.9844
694/1688 [===========>..................] - ETA: 2s - loss: 0.0527 - accuracy: 0.9844
718/1688 [===========>..................] - ETA: 2s - loss: 0.0528 - accuracy: 0.9844
743/1688 [============>.................] - ETA: 1s - loss: 0.0528 - accuracy: 0.9844
768/1688 [============>.................] - ETA: 1s - loss: 0.0529 - accuracy: 0.9844
794/1688 [=============>................] - ETA: 1s - loss: 0.0529 - accuracy: 0.9844
820/1688 [=============>................] - ETA: 1s - loss: 0.0530 - accuracy: 0.9844
845/1688 [==============>...............] - ETA: 1s - loss: 0.0530 - accuracy: 0.9844
869/1688 [==============>...............] - ETA: 1s - loss: 0.0531 - accuracy: 0.9843
894/1688 [==============>...............] - ETA: 1s - loss: 0.0531 - accuracy: 0.9843
918/1688 [===============>..............] - ETA: 1s - loss: 0.0531 - accuracy: 0.9843
943/1688 [===============>..............] - ETA: 1s - loss: 0.0532 - accuracy: 0.9843
968/1688 [================>.............] - ETA: 1s - loss: 0.0532 - accuracy: 0.9843
993/1688 [================>.............] - ETA: 1s - loss: 0.0532 - accuracy: 0.9843
1018/1688 [=================>............] - ETA: 1s - loss: 0.0532 - accuracy: 0.9843
1044/1688 [=================>............] - ETA: 1s - loss: 0.0532 - accuracy: 0.9843
1069/1688 [=================>............] - ETA: 1s - loss: 0.0532 - accuracy: 0.9843
1093/1688 [==================>...........] - ETA: 1s - loss: 0.0532 - accuracy: 0.9843
1117/1688 [==================>...........] - ETA: 1s - loss: 0.0532 - accuracy: 0.9843
1141/1688 [===================>..........] - ETA: 1s - loss: 0.0532 - accuracy: 0.9843
1165/1688 [===================>..........] - ETA: 1s - loss: 0.0532 - accuracy: 0.9843
1190/1688 [====================>.........] - ETA: 1s - loss: 0.0532 - accuracy: 0.9843
1215/1688 [====================>.........] - ETA: 0s - loss: 0.0531 - accuracy: 0.9843
1240/1688 [=====================>........] - ETA: 0s - loss: 0.0531 - accuracy: 0.9843
1265/1688 [=====================>........] - ETA: 0s - loss: 0.0531 - accuracy: 0.9843
1289/1688 [=====================>........] - ETA: 0s - loss: 0.0531 - accuracy: 0.9843
1314/1688 [======================>.......] - ETA: 0s - loss: 0.0531 - accuracy: 0.9843
1338/1688 [======================>.......] - ETA: 0s - loss: 0.0531 - accuracy: 0.9843
1362/1688 [=======================>......] - ETA: 0s - loss: 0.0531 - accuracy: 0.9843
1387/1688 [=======================>......] - ETA: 0s - loss: 0.0531 - accuracy: 0.9843
1412/1688 [========================>.....] - ETA: 0s - loss: 0.0530 - accuracy: 0.9843
1437/1688 [========================>.....] - ETA: 0s - loss: 0.0530 - accuracy: 0.9843
1462/1688 [========================>.....] - ETA: 0s - loss: 0.0530 - accuracy: 0.9842
1487/1688 [=========================>....] - ETA: 0s - loss: 0.0530 - accuracy: 0.9842
1511/1688 [=========================>....] - ETA: 0s - loss: 0.0530 - accuracy: 0.9842
1535/1688 [==========================>...] - ETA: 0s - loss: 0.0530 - accuracy: 0.9842
1560/1688 [==========================>...] - ETA: 0s - loss: 0.0530 - accuracy: 0.9842
1585/1688 [===========================>..] - ETA: 0s - loss: 0.0530 - accuracy: 0.9842
1610/1688 [===========================>..] - ETA: 0s - loss: 0.0530 - accuracy: 0.9842
1634/1688 [============================>.] - ETA: 0s - loss: 0.0530 - accuracy: 0.9842
1660/1688 [============================>.] - ETA: 0s - loss: 0.0530 - accuracy: 0.9842
1685/1688 [============================>.] - ETA: 0s - loss: 0.0530 - accuracy: 0.9842
1688/1688 [==============================] - 4s 2ms/step - loss: 0.0530 - accuracy: 0.9842 - val_loss: 0.0616 - val_accuracy: 0.9847
Epoch 8/10

   1/1688 [..............................] - ETA: 3s - loss: 0.0053 - accuracy: 1.0000
25/1688 [..............................] - ETA: 3s - loss: 0.0251 - accuracy: 0.9927
51/1688 [..............................] - ETA: 3s - loss: 0.0262 - accuracy: 0.9924
75/1688 [>.............................] - ETA: 3s - loss: 0.0286 - accuracy: 0.9917
100/1688 [>.............................] - ETA: 3s - loss: 0.0299 - accuracy: 0.9914
125/1688 [=>............................] - ETA: 3s - loss: 0.0309 - accuracy: 0.9910
149/1688 [=>............................] - ETA: 3s - loss: 0.0317 - accuracy: 0.9907
173/1688 [==>...........................] - ETA: 3s - loss: 0.0327 - accuracy: 0.9902
198/1688 [==>...........................] - ETA: 3s - loss: 0.0339 - accuracy: 0.9897
223/1688 [==>...........................] - ETA: 3s - loss: 0.0349 - accuracy: 0.9892
248/1688 [===>..........................] - ETA: 2s - loss: 0.0358 - accuracy: 0.9889
273/1688 [===>..........................] - ETA: 2s - loss: 0.0366 - accuracy: 0.9886
297/1688 [====>.........................] - ETA: 2s - loss: 0.0372 - accuracy: 0.9883
321/1688 [====>.........................] - ETA: 2s - loss: 0.0378 - accuracy: 0.9881
346/1688 [=====>........................] - ETA: 2s - loss: 0.0382 - accuracy: 0.9880
370/1688 [=====>........................] - ETA: 2s - loss: 0.0387 - accuracy: 0.9878
395/1688 [======>.......................] - ETA: 2s - loss: 0.0390 - accuracy: 0.9877
420/1688 [======>.......................] - ETA: 2s - loss: 0.0393 - accuracy: 0.9876
445/1688 [======>.......................] - ETA: 2s - loss: 0.0396 - accuracy: 0.9875
470/1688 [=======>......................] - ETA: 2s - loss: 0.0398 - accuracy: 0.9874
494/1688 [=======>......................] - ETA: 2s - loss: 0.0401 - accuracy: 0.9874
518/1688 [========>.....................] - ETA: 2s - loss: 0.0403 - accuracy: 0.9873
543/1688 [========>.....................] - ETA: 2s - loss: 0.0405 - accuracy: 0.9872
568/1688 [=========>....................] - ETA: 2s - loss: 0.0408 - accuracy: 0.9872
593/1688 [=========>....................] - ETA: 2s - loss: 0.0410 - accuracy: 0.9871
618/1688 [=========>....................] - ETA: 2s - loss: 0.0412 - accuracy: 0.9871
642/1688 [==========>...................] - ETA: 2s - loss: 0.0414 - accuracy: 0.9870
667/1688 [==========>...................] - ETA: 2s - loss: 0.0415 - accuracy: 0.9870
692/1688 [===========>..................] - ETA: 2s - loss: 0.0417 - accuracy: 0.9870
717/1688 [===========>..................] - ETA: 2s - loss: 0.0419 - accuracy: 0.9869
742/1688 [============>.................] - ETA: 1s - loss: 0.0420 - accuracy: 0.9869
767/1688 [============>.................] - ETA: 1s - loss: 0.0422 - accuracy: 0.9869
791/1688 [=============>................] - ETA: 1s - loss: 0.0423 - accuracy: 0.9869
814/1688 [=============>................] - ETA: 1s - loss: 0.0424 - accuracy: 0.9869
839/1688 [=============>................] - ETA: 1s - loss: 0.0425 - accuracy: 0.9868
863/1688 [==============>...............] - ETA: 1s - loss: 0.0425 - accuracy: 0.9868
887/1688 [==============>...............] - ETA: 1s - loss: 0.0426 - accuracy: 0.9868
911/1688 [===============>..............] - ETA: 1s - loss: 0.0427 - accuracy: 0.9868
936/1688 [===============>..............] - ETA: 1s - loss: 0.0428 - accuracy: 0.9868
961/1688 [================>.............] - ETA: 1s - loss: 0.0429 - accuracy: 0.9868
986/1688 [================>.............] - ETA: 1s - loss: 0.0429 - accuracy: 0.9867
1011/1688 [================>.............] - ETA: 1s - loss: 0.0430 - accuracy: 0.9867
1036/1688 [=================>............] - ETA: 1s - loss: 0.0431 - accuracy: 0.9867
1060/1688 [=================>............] - ETA: 1s - loss: 0.0431 - accuracy: 0.9867
1084/1688 [==================>...........] - ETA: 1s - loss: 0.0432 - accuracy: 0.9867
1109/1688 [==================>...........] - ETA: 1s - loss: 0.0432 - accuracy: 0.9867
1134/1688 [===================>..........] - ETA: 1s - loss: 0.0433 - accuracy: 0.9867
1158/1688 [===================>..........] - ETA: 1s - loss: 0.0434 - accuracy: 0.9867
1183/1688 [====================>.........] - ETA: 1s - loss: 0.0434 - accuracy: 0.9866
1208/1688 [====================>.........] - ETA: 0s - loss: 0.0435 - accuracy: 0.9866
1233/1688 [====================>.........] - ETA: 0s - loss: 0.0435 - accuracy: 0.9866
1258/1688 [=====================>........] - ETA: 0s - loss: 0.0436 - accuracy: 0.9866
1283/1688 [=====================>........] - ETA: 0s - loss: 0.0436 - accuracy: 0.9866
1308/1688 [======================>.......] - ETA: 0s - loss: 0.0437 - accuracy: 0.9866
1333/1688 [======================>.......] - ETA: 0s - loss: 0.0437 - accuracy: 0.9866
1358/1688 [=======================>......] - ETA: 0s - loss: 0.0438 - accuracy: 0.9866
1383/1688 [=======================>......] - ETA: 0s - loss: 0.0438 - accuracy: 0.9865
1407/1688 [========================>.....] - ETA: 0s - loss: 0.0439 - accuracy: 0.9865
1432/1688 [========================>.....] - ETA: 0s - loss: 0.0439 - accuracy: 0.9865
1457/1688 [========================>.....] - ETA: 0s - loss: 0.0440 - accuracy: 0.9865
1482/1688 [=========================>....] - ETA: 0s - loss: 0.0440 - accuracy: 0.9865
1506/1688 [=========================>....] - ETA: 0s - loss: 0.0440 - accuracy: 0.9865
1530/1688 [==========================>...] - ETA: 0s - loss: 0.0441 - accuracy: 0.9865
1554/1688 [==========================>...] - ETA: 0s - loss: 0.0441 - accuracy: 0.9865
1579/1688 [===========================>..] - ETA: 0s - loss: 0.0442 - accuracy: 0.9865
1604/1688 [===========================>..] - ETA: 0s - loss: 0.0443 - accuracy: 0.9865
1628/1688 [===========================>..] - ETA: 0s - loss: 0.0443 - accuracy: 0.9864
1653/1688 [============================>.] - ETA: 0s - loss: 0.0443 - accuracy: 0.9864
1677/1688 [============================>.] - ETA: 0s - loss: 0.0444 - accuracy: 0.9864
1688/1688 [==============================] - 4s 2ms/step - loss: 0.0444 - accuracy: 0.9864 - val_loss: 0.0622 - val_accuracy: 0.9843
Epoch 9/10

   1/1688 [..............................] - ETA: 4s - loss: 0.0563 - accuracy: 0.9688
26/1688 [..............................] - ETA: 3s - loss: 0.0371 - accuracy: 0.9817
50/1688 [..............................] - ETA: 3s - loss: 0.0374 - accuracy: 0.9839
74/1688 [>.............................] - ETA: 3s - loss: 0.0368 - accuracy: 0.9851
99/1688 [>.............................] - ETA: 3s - loss: 0.0374 - accuracy: 0.9857
124/1688 [=>............................] - ETA: 3s - loss: 0.0383 - accuracy: 0.9859
149/1688 [=>............................] - ETA: 3s - loss: 0.0388 - accuracy: 0.9861
174/1688 [==>...........................] - ETA: 3s - loss: 0.0388 - accuracy: 0.9863
198/1688 [==>...........................] - ETA: 3s - loss: 0.0387 - accuracy: 0.9865
222/1688 [==>...........................] - ETA: 3s - loss: 0.0386 - accuracy: 0.9866
247/1688 [===>..........................] - ETA: 2s - loss: 0.0385 - accuracy: 0.9867
271/1688 [===>..........................] - ETA: 2s - loss: 0.0384 - accuracy: 0.9868
295/1688 [====>.........................] - ETA: 2s - loss: 0.0383 - accuracy: 0.9869
320/1688 [====>.........................] - ETA: 2s - loss: 0.0382 - accuracy: 0.9871
345/1688 [=====>........................] - ETA: 2s - loss: 0.0381 - accuracy: 0.9872
369/1688 [=====>........................] - ETA: 2s - loss: 0.0380 - accuracy: 0.9872
393/1688 [=====>........................] - ETA: 2s - loss: 0.0380 - accuracy: 0.9873
416/1688 [======>.......................] - ETA: 2s - loss: 0.0380 - accuracy: 0.9874
440/1688 [======>.......................] - ETA: 2s - loss: 0.0380 - accuracy: 0.9874
466/1688 [=======>......................] - ETA: 2s - loss: 0.0379 - accuracy: 0.9875
491/1688 [=======>......................] - ETA: 2s - loss: 0.0379 - accuracy: 0.9875
516/1688 [========>.....................] - ETA: 2s - loss: 0.0378 - accuracy: 0.9876
540/1688 [========>.....................] - ETA: 2s - loss: 0.0378 - accuracy: 0.9877
565/1688 [=========>....................] - ETA: 2s - loss: 0.0378 - accuracy: 0.9877
590/1688 [=========>....................] - ETA: 2s - loss: 0.0378 - accuracy: 0.9878
614/1688 [=========>....................] - ETA: 2s - loss: 0.0378 - accuracy: 0.9878
639/1688 [==========>...................] - ETA: 2s - loss: 0.0379 - accuracy: 0.9878
664/1688 [==========>...................] - ETA: 2s - loss: 0.0379 - accuracy: 0.9878
688/1688 [===========>..................] - ETA: 2s - loss: 0.0380 - accuracy: 0.9878
713/1688 [===========>..................] - ETA: 2s - loss: 0.0381 - accuracy: 0.9878
738/1688 [============>.................] - ETA: 1s - loss: 0.0382 - accuracy: 0.9878
762/1688 [============>.................] - ETA: 1s - loss: 0.0383 - accuracy: 0.9878
787/1688 [============>.................] - ETA: 1s - loss: 0.0383 - accuracy: 0.9878
812/1688 [=============>................] - ETA: 1s - loss: 0.0384 - accuracy: 0.9878
836/1688 [=============>................] - ETA: 1s - loss: 0.0385 - accuracy: 0.9878
860/1688 [==============>...............] - ETA: 1s - loss: 0.0386 - accuracy: 0.9878
884/1688 [==============>...............] - ETA: 1s - loss: 0.0387 - accuracy: 0.9878
909/1688 [===============>..............] - ETA: 1s - loss: 0.0387 - accuracy: 0.9878
934/1688 [===============>..............] - ETA: 1s - loss: 0.0388 - accuracy: 0.9878
959/1688 [================>.............] - ETA: 1s - loss: 0.0389 - accuracy: 0.9878
984/1688 [================>.............] - ETA: 1s - loss: 0.0389 - accuracy: 0.9878
1009/1688 [================>.............] - ETA: 1s - loss: 0.0390 - accuracy: 0.9878
1033/1688 [=================>............] - ETA: 1s - loss: 0.0391 - accuracy: 0.9878
1058/1688 [=================>............] - ETA: 1s - loss: 0.0392 - accuracy: 0.9877
1083/1688 [==================>...........] - ETA: 1s - loss: 0.0392 - accuracy: 0.9877
1108/1688 [==================>...........] - ETA: 1s - loss: 0.0393 - accuracy: 0.9877
1133/1688 [===================>..........] - ETA: 1s - loss: 0.0394 - accuracy: 0.9877
1157/1688 [===================>..........] - ETA: 1s - loss: 0.0394 - accuracy: 0.9877
1181/1688 [===================>..........] - ETA: 1s - loss: 0.0395 - accuracy: 0.9877
1206/1688 [====================>.........] - ETA: 1s - loss: 0.0396 - accuracy: 0.9877
1231/1688 [====================>.........] - ETA: 0s - loss: 0.0397 - accuracy: 0.9877
1255/1688 [=====================>........] - ETA: 0s - loss: 0.0397 - accuracy: 0.9876
1279/1688 [=====================>........] - ETA: 0s - loss: 0.0398 - accuracy: 0.9876
1303/1688 [======================>.......] - ETA: 0s - loss: 0.0399 - accuracy: 0.9876
1327/1688 [======================>.......] - ETA: 0s - loss: 0.0399 - accuracy: 0.9876
1351/1688 [=======================>......] - ETA: 0s - loss: 0.0400 - accuracy: 0.9876
1376/1688 [=======================>......] - ETA: 0s - loss: 0.0401 - accuracy: 0.9876
1401/1688 [=======================>......] - ETA: 0s - loss: 0.0401 - accuracy: 0.9876
1425/1688 [========================>.....] - ETA: 0s - loss: 0.0402 - accuracy: 0.9876
1450/1688 [========================>.....] - ETA: 0s - loss: 0.0402 - accuracy: 0.9875
1475/1688 [=========================>....] - ETA: 0s - loss: 0.0403 - accuracy: 0.9875
1499/1688 [=========================>....] - ETA: 0s - loss: 0.0403 - accuracy: 0.9875
1523/1688 [==========================>...] - ETA: 0s - loss: 0.0404 - accuracy: 0.9875
1547/1688 [==========================>...] - ETA: 0s - loss: 0.0404 - accuracy: 0.9875
1572/1688 [==========================>...] - ETA: 0s - loss: 0.0405 - accuracy: 0.9875
1597/1688 [===========================>..] - ETA: 0s - loss: 0.0405 - accuracy: 0.9875
1622/1688 [===========================>..] - ETA: 0s - loss: 0.0406 - accuracy: 0.9875
1646/1688 [============================>.] - ETA: 0s - loss: 0.0406 - accuracy: 0.9875
1671/1688 [============================>.] - ETA: 0s - loss: 0.0407 - accuracy: 0.9875
1688/1688 [==============================] - 4s 2ms/step - loss: 0.0407 - accuracy: 0.9874 - val_loss: 0.0620 - val_accuracy: 0.9840
Epoch 10/10

   1/1688 [..............................] - ETA: 3s - loss: 0.0255 - accuracy: 1.0000
26/1688 [..............................] - ETA: 3s - loss: 0.0354 - accuracy: 0.9928
51/1688 [..............................] - ETA: 3s - loss: 0.0338 - accuracy: 0.9922
75/1688 [>.............................] - ETA: 3s - loss: 0.0337 - accuracy: 0.9918
100/1688 [>.............................] - ETA: 3s - loss: 0.0339 - accuracy: 0.9911
125/1688 [=>............................] - ETA: 3s - loss: 0.0341 - accuracy: 0.9908
149/1688 [=>............................] - ETA: 3s - loss: 0.0343 - accuracy: 0.9904
174/1688 [==>...........................] - ETA: 3s - loss: 0.0344 - accuracy: 0.9902
198/1688 [==>...........................] - ETA: 3s - loss: 0.0345 - accuracy: 0.9901
223/1688 [==>...........................] - ETA: 3s - loss: 0.0346 - accuracy: 0.9900
248/1688 [===>..........................] - ETA: 2s - loss: 0.0347 - accuracy: 0.9899
273/1688 [===>..........................] - ETA: 2s - loss: 0.0348 - accuracy: 0.9899
297/1688 [====>.........................] - ETA: 2s - loss: 0.0350 - accuracy: 0.9898
322/1688 [====>.........................] - ETA: 2s - loss: 0.0352 - accuracy: 0.9897
346/1688 [=====>........................] - ETA: 2s - loss: 0.0353 - accuracy: 0.9897
371/1688 [=====>........................] - ETA: 2s - loss: 0.0354 - accuracy: 0.9896
396/1688 [======>.......................] - ETA: 2s - loss: 0.0354 - accuracy: 0.9896
421/1688 [======>.......................] - ETA: 2s - loss: 0.0354 - accuracy: 0.9896
446/1688 [======>.......................] - ETA: 2s - loss: 0.0354 - accuracy: 0.9896
471/1688 [=======>......................] - ETA: 2s - loss: 0.0354 - accuracy: 0.9896
496/1688 [=======>......................] - ETA: 2s - loss: 0.0354 - accuracy: 0.9895
521/1688 [========>.....................] - ETA: 2s - loss: 0.0354 - accuracy: 0.9895
546/1688 [========>.....................] - ETA: 2s - loss: 0.0355 - accuracy: 0.9895
571/1688 [=========>....................] - ETA: 2s - loss: 0.0355 - accuracy: 0.9895
596/1688 [=========>....................] - ETA: 2s - loss: 0.0356 - accuracy: 0.9894
621/1688 [==========>...................] - ETA: 2s - loss: 0.0356 - accuracy: 0.9894
644/1688 [==========>...................] - ETA: 2s - loss: 0.0357 - accuracy: 0.9894
669/1688 [==========>...................] - ETA: 2s - loss: 0.0357 - accuracy: 0.9894
694/1688 [===========>..................] - ETA: 2s - loss: 0.0357 - accuracy: 0.9894
719/1688 [===========>..................] - ETA: 2s - loss: 0.0357 - accuracy: 0.9894
743/1688 [============>.................] - ETA: 1s - loss: 0.0357 - accuracy: 0.9893
767/1688 [============>.................] - ETA: 1s - loss: 0.0357 - accuracy: 0.9893
791/1688 [=============>................] - ETA: 1s - loss: 0.0357 - accuracy: 0.9893
815/1688 [=============>................] - ETA: 1s - loss: 0.0357 - accuracy: 0.9893
839/1688 [=============>................] - ETA: 1s - loss: 0.0358 - accuracy: 0.9893
863/1688 [==============>...............] - ETA: 1s - loss: 0.0358 - accuracy: 0.9893
888/1688 [==============>...............] - ETA: 1s - loss: 0.0358 - accuracy: 0.9893
913/1688 [===============>..............] - ETA: 1s - loss: 0.0359 - accuracy: 0.9893
938/1688 [===============>..............] - ETA: 1s - loss: 0.0359 - accuracy: 0.9892
963/1688 [================>.............] - ETA: 1s - loss: 0.0359 - accuracy: 0.9892
989/1688 [================>.............] - ETA: 1s - loss: 0.0360 - accuracy: 0.9892
1014/1688 [=================>............] - ETA: 1s - loss: 0.0360 - accuracy: 0.9892
1039/1688 [=================>............] - ETA: 1s - loss: 0.0361 - accuracy: 0.9892
1064/1688 [=================>............] - ETA: 1s - loss: 0.0361 - accuracy: 0.9891
1089/1688 [==================>...........] - ETA: 1s - loss: 0.0362 - accuracy: 0.9891
1115/1688 [==================>...........] - ETA: 1s - loss: 0.0362 - accuracy: 0.9891
1141/1688 [===================>..........] - ETA: 1s - loss: 0.0363 - accuracy: 0.9891
1166/1688 [===================>..........] - ETA: 1s - loss: 0.0364 - accuracy: 0.9891
1192/1688 [====================>.........] - ETA: 1s - loss: 0.0364 - accuracy: 0.9890
1218/1688 [====================>.........] - ETA: 0s - loss: 0.0365 - accuracy: 0.9890
1243/1688 [=====================>........] - ETA: 0s - loss: 0.0365 - accuracy: 0.9890
1269/1688 [=====================>........] - ETA: 0s - loss: 0.0366 - accuracy: 0.9890
1295/1688 [======================>.......] - ETA: 0s - loss: 0.0366 - accuracy: 0.9890
1321/1688 [======================>.......] - ETA: 0s - loss: 0.0367 - accuracy: 0.9890
1346/1688 [======================>.......] - ETA: 0s - loss: 0.0367 - accuracy: 0.9889
1371/1688 [=======================>......] - ETA: 0s - loss: 0.0367 - accuracy: 0.9889
1396/1688 [=======================>......] - ETA: 0s - loss: 0.0368 - accuracy: 0.9889
1421/1688 [========================>.....] - ETA: 0s - loss: 0.0368 - accuracy: 0.9889
1446/1688 [========================>.....] - ETA: 0s - loss: 0.0369 - accuracy: 0.9889
1472/1688 [=========================>....] - ETA: 0s - loss: 0.0369 - accuracy: 0.9889
1498/1688 [=========================>....] - ETA: 0s - loss: 0.0370 - accuracy: 0.9888
1523/1688 [==========================>...] - ETA: 0s - loss: 0.0370 - accuracy: 0.9888
1548/1688 [==========================>...] - ETA: 0s - loss: 0.0370 - accuracy: 0.9888
1574/1688 [==========================>...] - ETA: 0s - loss: 0.0371 - accuracy: 0.9888
1600/1688 [===========================>..] - ETA: 0s - loss: 0.0371 - accuracy: 0.9888
1625/1688 [===========================>..] - ETA: 0s - loss: 0.0371 - accuracy: 0.9888
1651/1688 [============================>.] - ETA: 0s - loss: 0.0372 - accuracy: 0.9888
1677/1688 [============================>.] - ETA: 0s - loss: 0.0372 - accuracy: 0.9888
1688/1688 [==============================] - 4s 2ms/step - loss: 0.0372 - accuracy: 0.9888 - val_loss: 0.0684 - val_accuracy: 0.9818
<tensorflow.python.keras.callbacks.History at 0x7fa994f7a588>

ベースラインモデルを評価して後で使用できるように保存する

_, baseline_model_accuracy = model.evaluate(
    test_images, test_labels, verbose=0)

print('Baseline test accuracy:', baseline_model_accuracy)

_, keras_file = tempfile.mkstemp('.h5')
print('Saving model to: ', keras_file)
tf.keras.models.save_model(model, keras_file, include_optimizer=False)
Baseline test accuracy: 0.9789999723434448
Saving model to:  /tmp/tmp8m1tzkhh.h5

クラスタを使ってトレーニング済みのモデルを微調整する

cluster_weights() API をトレーニング済みのモデル全体に適用し、十分な精度を維持しながら zip 適用後のモデル縮小の効果を実演します。ユースケースに応じた精度と圧縮率のバランスについては、総合ガイドのレイヤー別の例をご覧ください。

モデルを定義してクラスタリング API を適用する

クラスタリング API にモデルを渡す前に、必ずトレーニングを実行し、許容できる精度が備わっていることを確認してください。

import tensorflow_model_optimization as tfmot

cluster_weights = tfmot.clustering.keras.cluster_weights
CentroidInitialization = tfmot.clustering.keras.CentroidInitialization

clustering_params = {
  'number_of_clusters': 16,
  'cluster_centroids_init': CentroidInitialization.LINEAR
}

# Cluster a whole model
clustered_model = cluster_weights(model, **clustering_params)

# Use smaller learning rate for fine-tuning clustered model
opt = tf.keras.optimizers.Adam(learning_rate=1e-5)

clustered_model.compile(
  loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
  optimizer=opt,
  metrics=['accuracy'])

clustered_model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
cluster_reshape (ClusterWeig (None, 28, 28, 1)         0         
_________________________________________________________________
cluster_conv2d (ClusterWeigh (None, 26, 26, 12)        136       
_________________________________________________________________
cluster_max_pooling2d (Clust (None, 13, 13, 12)        0         
_________________________________________________________________
cluster_flatten (ClusterWeig (None, 2028)              0         
_________________________________________________________________
cluster_dense (ClusterWeight (None, 10)                20306     
=================================================================
Total params: 20,442
Trainable params: 54
Non-trainable params: 20,388
_________________________________________________________________

モデルを微調整し、ベースラインに対する精度を評価する

1 エポック、クラスタでモデルを微調整します。

# Fine-tune model
clustered_model.fit(
  train_images,
  train_labels,
  batch_size=500,
  epochs=1,
  validation_split=0.1)
1/108 [..............................] - ETA: 47s - loss: 0.0911 - accuracy: 0.9680
17/108 [===>..........................] - ETA: 0s - loss: 0.0690 - accuracy: 0.9767
33/108 [========>.....................] - ETA: 0s - loss: 0.0675 - accuracy: 0.9771
49/108 [============>.................] - ETA: 0s - loss: 0.0677 - accuracy: 0.9768
65/108 [=================>............] - ETA: 0s - loss: 0.0681 - accuracy: 0.9768
81/108 [=====================>........] - ETA: 0s - loss: 0.0683 - accuracy: 0.9768
97/108 [=========================>....] - ETA: 0s - loss: 0.0683 - accuracy: 0.9769
108/108 [==============================] - 1s 6ms/step - loss: 0.0683 - accuracy: 0.9770 - val_loss: 0.0977 - val_accuracy: 0.9747
<tensorflow.python.keras.callbacks.History at 0x7faa032a4d68>

この例では、ベースラインと比較し、クラスタリング後のテスト精度に最小限の損失があります。

_, clustered_model_accuracy = clustered_model.evaluate(
  test_images, test_labels, verbose=0)

print('Baseline test accuracy:', baseline_model_accuracy)
print('Clustered test accuracy:', clustered_model_accuracy)
Baseline test accuracy: 0.9789999723434448
Clustered test accuracy: 0.9702000021934509

クラスタリングによって 6 倍小さなモデルを作成する

strip_clustering と標準圧縮アルゴリズム(gzip など)の適用は、クラスタリングの圧縮のメリットを確認する上で必要です。

まず、TensorFlow の圧縮可能なモデルを作成します。ここで、strip_clustering は、クラスタリングがトレーニング中にのみ必要とするすべての変数(クラスタの重心とインデックスを格納する tf.Variable など)を除去します。そうしない場合、推論中にモデルサイズが増加してしまいます。

final_model = tfmot.clustering.keras.strip_clustering(clustered_model)

_, clustered_keras_file = tempfile.mkstemp('.h5')
print('Saving clustered model to: ', clustered_keras_file)
tf.keras.models.save_model(final_model, clustered_keras_file, 
                           include_optimizer=False)
Saving clustered model to:  /tmp/tmpz9c4ugbj.h5

次に、TFLite の圧縮可能なモデルを作成します。クラスタモデルをターゲットバックエンドで実行可能な形式に変換できます。TensorFlow Lite は、モバイルデバイスにデプロイするために使用できる例です。

clustered_tflite_file = '/tmp/clustered_mnist.tflite'
converter = tf.lite.TFLiteConverter.from_keras_model(final_model)
tflite_clustered_model = converter.convert()
with open(clustered_tflite_file, 'wb') as f:
  f.write(tflite_clustered_model)
print('Saved clustered TFLite model to:', clustered_tflite_file)
INFO:tensorflow:Assets written to: /tmp/tmp41s2kzub/assets
Saved clustered TFLite model to: /tmp/clustered_mnist.tflite

実際に gzip でモデルを圧縮し、zip 圧縮されたサイズを測定するヘルパー関数を定義します。

def get_gzipped_model_size(file):
  # It returns the size of the gzipped model in bytes.
  import os
  import zipfile

  _, zipped_file = tempfile.mkstemp('.zip')
  with zipfile.ZipFile(zipped_file, 'w', compression=zipfile.ZIP_DEFLATED) as f:
    f.write(file)

  return os.path.getsize(zipped_file)

比較して、モデルがクラスタリングによって 6 倍小さくなっていることを確認します。

print("Size of gzipped baseline Keras model: %.2f bytes" % (get_gzipped_model_size(keras_file)))
print("Size of gzipped clustered Keras model: %.2f bytes" % (get_gzipped_model_size(clustered_keras_file)))
print("Size of gzipped clustered TFlite model: %.2f bytes" % (get_gzipped_model_size(clustered_tflite_file)))
Size of gzipped baseline Keras model: 78047.00 bytes
Size of gzipped clustered Keras model: 12419.00 bytes
Size of gzipped clustered TFlite model: 11920.00 bytes

重みクラスタリングとポストトレーニング量子化を組み合わせて、8 倍小さな TFLite モデルを作成する

さらにメリットを得るために、ポストトレーニング量子化をクラスタモデルに適用できます。

converter = tf.lite.TFLiteConverter.from_keras_model(final_model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quant_model = converter.convert()

_, quantized_and_clustered_tflite_file = tempfile.mkstemp('.tflite')

with open(quantized_and_clustered_tflite_file, 'wb') as f:
  f.write(tflite_quant_model)

print('Saved quantized and clustered TFLite model to:', quantized_and_clustered_tflite_file)
print("Size of gzipped baseline Keras model: %.2f bytes" % (get_gzipped_model_size(keras_file)))
print("Size of gzipped clustered and quantized TFlite model: %.2f bytes" % (get_gzipped_model_size(quantized_and_clustered_tflite_file)))
INFO:tensorflow:Assets written to: /tmp/tmpg3y6r2ll/assets
INFO:tensorflow:Assets written to: /tmp/tmpg3y6r2ll/assets
Saved quantized and clustered TFLite model to: /tmp/tmp6p9j3n3w.tflite
Size of gzipped baseline Keras model: 78047.00 bytes
Size of gzipped clustered and quantized TFlite model: 9045.00 bytes

TF から TFLite への精度の永続性を確認する

テストデータセットで TFLite モデルを評価するヘルパー関数を定義します。

def eval_model(interpreter):
  input_index = interpreter.get_input_details()[0]["index"]
  output_index = interpreter.get_output_details()[0]["index"]

  # Run predictions on every image in the "test" dataset.
  prediction_digits = []
  for i, test_image in enumerate(test_images):
    if i % 1000 == 0:
      print('Evaluated on {n} results so far.'.format(n=i))
    # Pre-processing: add batch dimension and convert to float32 to match with
    # the model's input data format.
    test_image = np.expand_dims(test_image, axis=0).astype(np.float32)
    interpreter.set_tensor(input_index, test_image)

    # Run inference.
    interpreter.invoke()

    # Post-processing: remove batch dimension and find the digit with highest
    # probability.
    output = interpreter.tensor(output_index)
    digit = np.argmax(output()[0])
    prediction_digits.append(digit)

  print('\n')
  # Compare prediction results with ground truth labels to calculate accuracy.
  prediction_digits = np.array(prediction_digits)
  accuracy = (prediction_digits == test_labels).mean()
  return accuracy

クラスタ化および量子化されたモデルを評価し、TensorFlow の精度が TFLite バックエンドに持続することを確認します。

interpreter = tf.lite.Interpreter(model_content=tflite_quant_model)
interpreter.allocate_tensors()

test_accuracy = eval_model(interpreter)

print('Clustered and quantized TFLite test_accuracy:', test_accuracy)
print('Clustered TF test accuracy:', clustered_model_accuracy)
Evaluated on 0 results so far.
Evaluated on 1000 results so far.
Evaluated on 2000 results so far.
Evaluated on 3000 results so far.
Evaluated on 4000 results so far.
Evaluated on 5000 results so far.
Evaluated on 6000 results so far.
Evaluated on 7000 results so far.
Evaluated on 8000 results so far.
Evaluated on 9000 results so far.
Clustered and quantized TFLite test_accuracy: 0.9698
Clustered TF test accuracy: 0.9702000021934509

まとめ

このチュートリアルでは、TensorFlow Model Optimization Toolkit API を使用してクラスタモデルを作成する方法を確認しました。より具体的には、精度の違いを最小限に抑えて MNIST の 8 倍の小さいモデルを作成する、エンドツーエンドの例を確認しました。この新しい機能を試すことをお勧めします。これは、リソースに制約のある環境でのデプロイに特に重要な機能です。