Global Akida workflow

Using the MNIST dataset, this example shows the definition and training of a keras floating point model, its quantization to 8-bit with the help of calibration, its quantization to 4-bit using QAT and its conversion to Akida. Notice that the performance of the original keras floating point model is maintained throughout the Akida flow. Please refer to the Akida user guide for further information.

Note

Please refer to the TensorFlow tf.keras.models module for model creation/import details and the TensorFlow Guide for TensorFlow usage.

The MNIST example below is light enough so that a GPU is not needed for training.

Overall flow

Global Akida workflow

1. Create and train

1.1. Load and reshape MNIST dataset

import numpy as np

import matplotlib.cm as cm
import matplotlib.pyplot as plt

from keras.datasets import mnist

# Load MNIST dataset
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# Add a channels dimension to the image sets as Akida expects 4-D inputs (corresponding to
# (num_samples, width, height, channels). Note: MNIST is a grayscale dataset and is unusual
# in this respect - most image data already includes a channel dimension, and this step will
# not be necessary.
x_train = np.expand_dims(x_train, -1)
x_test = np.expand_dims(x_test, -1)

# Display a few images from the test set
f, axarr = plt.subplots(1, 4)
for i in range(0, 4):
    axarr[i].imshow(x_test[i].reshape((28, 28)), cmap=cm.Greys_r)
    axarr[i].set_title('Class %d' % y_test[i])
plt.show()
Class 7, Class 2, Class 1, Class 0
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz

    8192/11490434 [..............................] - ETA: 0s
   16384/11490434 [..............................] - ETA: 4:20
   24576/11490434 [..............................] - ETA: 3:25
   32768/11490434 [..............................] - ETA: 2:59
   40960/11490434 [..............................] - ETA: 2:43
   49152/11490434 [..............................] - ETA: 3:07
   57344/11490434 [..............................] - ETA: 2:52
   65536/11490434 [..............................] - ETA: 2:41
   73728/11490434 [..............................] - ETA: 2:34
   81920/11490434 [..............................] - ETA: 2:45
   98304/11490434 [..............................] - ETA: 2:26
  114688/11490434 [..............................] - ETA: 2:13
  131072/11490434 [..............................] - ETA: 2:03
  139264/11490434 [..............................] - ETA: 2:11
  155648/11490434 [..............................] - ETA: 2:01
  172032/11490434 [..............................] - ETA: 1:53
  196608/11490434 [..............................] - ETA: 1:43
  221184/11490434 [..............................] - ETA: 1:34
  237568/11490434 [..............................] - ETA: 1:34
  262144/11490434 [..............................] - ETA: 1:27
  286720/11490434 [..............................] - ETA: 1:22
  311296/11490434 [..............................] - ETA: 1:18
  335872/11490434 [..............................] - ETA: 1:14
  368640/11490434 [..............................] - ETA: 1:09
  376832/11490434 [..............................] - ETA: 1:10
  417792/11490434 [>.............................] - ETA: 1:04
  458752/11490434 [>.............................] - ETA: 1:00
  491520/11490434 [>.............................] - ETA: 57s 
  524288/11490434 [>.............................] - ETA: 54s
  565248/11490434 [>.............................] - ETA: 51s
  606208/11490434 [>.............................] - ETA: 50s
  663552/11490434 [>.............................] - ETA: 46s
  737280/11490434 [>.............................] - ETA: 42s
  802816/11490434 [=>............................] - ETA: 39s
  851968/11490434 [=>............................] - ETA: 37s
  925696/11490434 [=>............................] - ETA: 34s
  991232/11490434 [=>............................] - ETA: 33s
 1040384/11490434 [=>............................] - ETA: 32s
 1130496/11490434 [=>............................] - ETA: 30s
 1245184/11490434 [==>...........................] - ETA: 27s
 1359872/11490434 [==>...........................] - ETA: 25s
 1458176/11490434 [==>...........................] - ETA: 23s
 1589248/11490434 [===>..........................] - ETA: 21s
 1638400/11490434 [===>..........................] - ETA: 21s
 1720320/11490434 [===>..........................] - ETA: 20s
 1884160/11490434 [===>..........................] - ETA: 18s
 2031616/11490434 [====>.........................] - ETA: 17s
 2211840/11490434 [====>.........................] - ETA: 15s
 2408448/11490434 [=====>........................] - ETA: 14s
 2605056/11490434 [=====>........................] - ETA: 13s
 2752512/11490434 [======>.......................] - ETA: 12s
 2916352/11490434 [======>.......................] - ETA: 11s
 3211264/11490434 [=======>......................] - ETA: 10s
 3440640/11490434 [=======>......................] - ETA: 9s 
 3670016/11490434 [========>.....................] - ETA: 8s
 3997696/11490434 [=========>....................] - ETA: 7s
 4358144/11490434 [==========>...................] - ETA: 6s
 4669440/11490434 [===========>..................] - ETA: 6s
 5144576/11490434 [============>.................] - ETA: 5s
 5660672/11490434 [=============>................] - ETA: 4s
 6029312/11490434 [==============>...............] - ETA: 4s
 6782976/11490434 [================>.............] - ETA: 3s
 7536640/11490434 [==================>...........] - ETA: 2s
 8159232/11490434 [====================>.........] - ETA: 1s
 8847360/11490434 [======================>.......] - ETA: 1s
 9273344/11490434 [=======================>......] - ETA: 1s
 9912320/11490434 [========================>.....] - ETA: 0s
10551296/11490434 [==========================>...] - ETA: 0s
11157504/11490434 [============================>.] - ETA: 0s
11490434/11490434 [==============================] - 5s 0us/step

1.2. Model definition

Note that at this stage, there is nothing specific to the Akida IP. The model constructed below, as inspired by this example, is a completely standard Keras CNN model.

import keras

model_keras = keras.models.Sequential([
    keras.layers.Rescaling(1. / 255, input_shape=(28, 28, 1)),
    keras.layers.Conv2D(filters=32, kernel_size=3, strides=2),
    keras.layers.BatchNormalization(),
    keras.layers.ReLU(),
    # Separable layer
    keras.layers.DepthwiseConv2D(kernel_size=3, padding='same', strides=2),
    keras.layers.Conv2D(filters=64, kernel_size=1, padding='same'),
    keras.layers.BatchNormalization(),
    keras.layers.ReLU(),
    keras.layers.Flatten(),
    keras.layers.Dense(10)
], 'mnistnet')

model_keras.summary()
Model: "mnistnet"
_________________________________________________________________
 Layer (type)                Output Shape              Param #
=================================================================
 rescaling (Rescaling)       (None, 28, 28, 1)         0

 conv2d (Conv2D)             (None, 13, 13, 32)        320

 batch_normalization (Batch  (None, 13, 13, 32)        128
 Normalization)

 re_lu (ReLU)                (None, 13, 13, 32)        0

 depthwise_conv2d (Depthwis  (None, 7, 7, 32)          320
 eConv2D)

 conv2d_1 (Conv2D)           (None, 7, 7, 64)          2112

 batch_normalization_1 (Bat  (None, 7, 7, 64)          256
 chNormalization)

 re_lu_1 (ReLU)              (None, 7, 7, 64)          0

 flatten (Flatten)           (None, 3136)              0

 dense (Dense)               (None, 10)                31370

=================================================================
Total params: 34506 (134.79 KB)
Trainable params: 34314 (134.04 KB)
Non-trainable params: 192 (768.00 Byte)
_________________________________________________________________

1.3. Model training

Given the model created above, train the model and check its accuracy. The model should achieve a test accuracy over 98% after 10 epochs.

from keras.optimizers import Adam

model_keras.compile(
    loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
    optimizer=Adam(learning_rate=1e-3),
    metrics=['accuracy'])

_ = model_keras.fit(x_train, y_train, epochs=10, validation_split=0.1)
Epoch 1/10

   1/1688 [..............................] - ETA: 49:23 - loss: 2.4728 - accuracy: 0.0625
  23/1688 [..............................] - ETA: 3s - loss: 1.3669 - accuracy: 0.5435   
  46/1688 [..............................] - ETA: 3s - loss: 0.9708 - accuracy: 0.6855
  68/1688 [>.............................] - ETA: 3s - loss: 0.7950 - accuracy: 0.7445
  91/1688 [>.............................] - ETA: 3s - loss: 0.6824 - accuracy: 0.7823
 114/1688 [=>............................] - ETA: 3s - loss: 0.6177 - accuracy: 0.8032
 137/1688 [=>............................] - ETA: 3s - loss: 0.5724 - accuracy: 0.8196
 160/1688 [=>............................] - ETA: 3s - loss: 0.5318 - accuracy: 0.8338
 183/1688 [==>...........................] - ETA: 3s - loss: 0.5078 - accuracy: 0.8412
 207/1688 [==>...........................] - ETA: 3s - loss: 0.4757 - accuracy: 0.8524
 230/1688 [===>..........................] - ETA: 3s - loss: 0.4461 - accuracy: 0.8625
 254/1688 [===>..........................] - ETA: 3s - loss: 0.4244 - accuracy: 0.8693
 276/1688 [===>..........................] - ETA: 3s - loss: 0.4094 - accuracy: 0.8747
 299/1688 [====>.........................] - ETA: 3s - loss: 0.3950 - accuracy: 0.8779
 322/1688 [====>.........................] - ETA: 3s - loss: 0.3802 - accuracy: 0.8824
 345/1688 [=====>........................] - ETA: 3s - loss: 0.3673 - accuracy: 0.8867
 369/1688 [=====>........................] - ETA: 2s - loss: 0.3563 - accuracy: 0.8899
 392/1688 [=====>........................] - ETA: 2s - loss: 0.3486 - accuracy: 0.8923
 415/1688 [======>.......................] - ETA: 2s - loss: 0.3403 - accuracy: 0.8947
 438/1688 [======>.......................] - ETA: 2s - loss: 0.3317 - accuracy: 0.8974
 461/1688 [=======>......................] - ETA: 2s - loss: 0.3245 - accuracy: 0.8998
 484/1688 [=======>......................] - ETA: 2s - loss: 0.3161 - accuracy: 0.9025
 507/1688 [========>.....................] - ETA: 2s - loss: 0.3087 - accuracy: 0.9048
 530/1688 [========>.....................] - ETA: 2s - loss: 0.2999 - accuracy: 0.9080
 553/1688 [========>.....................] - ETA: 2s - loss: 0.2929 - accuracy: 0.9103
 576/1688 [=========>....................] - ETA: 2s - loss: 0.2887 - accuracy: 0.9116
 599/1688 [=========>....................] - ETA: 2s - loss: 0.2842 - accuracy: 0.9129
 622/1688 [==========>...................] - ETA: 2s - loss: 0.2779 - accuracy: 0.9151
 645/1688 [==========>...................] - ETA: 2s - loss: 0.2735 - accuracy: 0.9165
 668/1688 [==========>...................] - ETA: 2s - loss: 0.2697 - accuracy: 0.9177
 691/1688 [===========>..................] - ETA: 2s - loss: 0.2650 - accuracy: 0.9190
 714/1688 [===========>..................] - ETA: 2s - loss: 0.2603 - accuracy: 0.9203
 738/1688 [============>.................] - ETA: 2s - loss: 0.2557 - accuracy: 0.9220
 761/1688 [============>.................] - ETA: 2s - loss: 0.2520 - accuracy: 0.9232
 784/1688 [============>.................] - ETA: 2s - loss: 0.2478 - accuracy: 0.9245
 807/1688 [=============>................] - ETA: 1s - loss: 0.2435 - accuracy: 0.9257
 830/1688 [=============>................] - ETA: 1s - loss: 0.2401 - accuracy: 0.9269
 853/1688 [==============>...............] - ETA: 1s - loss: 0.2366 - accuracy: 0.9278
 876/1688 [==============>...............] - ETA: 1s - loss: 0.2341 - accuracy: 0.9287
 899/1688 [==============>...............] - ETA: 1s - loss: 0.2302 - accuracy: 0.9299
 922/1688 [===============>..............] - ETA: 1s - loss: 0.2272 - accuracy: 0.9308
 945/1688 [===============>..............] - ETA: 1s - loss: 0.2248 - accuracy: 0.9316
 967/1688 [================>.............] - ETA: 1s - loss: 0.2220 - accuracy: 0.9324
 990/1688 [================>.............] - ETA: 1s - loss: 0.2187 - accuracy: 0.9334
1013/1688 [=================>............] - ETA: 1s - loss: 0.2164 - accuracy: 0.9340
1036/1688 [=================>............] - ETA: 1s - loss: 0.2134 - accuracy: 0.9348
1059/1688 [=================>............] - ETA: 1s - loss: 0.2115 - accuracy: 0.9356
1082/1688 [==================>...........] - ETA: 1s - loss: 0.2095 - accuracy: 0.9362
1105/1688 [==================>...........] - ETA: 1s - loss: 0.2073 - accuracy: 0.9369
1128/1688 [===================>..........] - ETA: 1s - loss: 0.2062 - accuracy: 0.9371
1150/1688 [===================>..........] - ETA: 1s - loss: 0.2045 - accuracy: 0.9377
1173/1688 [===================>..........] - ETA: 1s - loss: 0.2019 - accuracy: 0.9385
1196/1688 [====================>.........] - ETA: 1s - loss: 0.2003 - accuracy: 0.9390
1219/1688 [====================>.........] - ETA: 1s - loss: 0.1981 - accuracy: 0.9398
1242/1688 [=====================>........] - ETA: 0s - loss: 0.1959 - accuracy: 0.9405
1265/1688 [=====================>........] - ETA: 0s - loss: 0.1938 - accuracy: 0.9413
1288/1688 [=====================>........] - ETA: 0s - loss: 0.1921 - accuracy: 0.9419
1311/1688 [======================>.......] - ETA: 0s - loss: 0.1909 - accuracy: 0.9423
1334/1688 [======================>.......] - ETA: 0s - loss: 0.1896 - accuracy: 0.9427
1357/1688 [=======================>......] - ETA: 0s - loss: 0.1882 - accuracy: 0.9432
1380/1688 [=======================>......] - ETA: 0s - loss: 0.1866 - accuracy: 0.9436
1403/1688 [=======================>......] - ETA: 0s - loss: 0.1852 - accuracy: 0.9440
1426/1688 [========================>.....] - ETA: 0s - loss: 0.1839 - accuracy: 0.9443
1449/1688 [========================>.....] - ETA: 0s - loss: 0.1825 - accuracy: 0.9448
1472/1688 [=========================>....] - ETA: 0s - loss: 0.1817 - accuracy: 0.9451
1493/1688 [=========================>....] - ETA: 0s - loss: 0.1803 - accuracy: 0.9455
1514/1688 [=========================>....] - ETA: 0s - loss: 0.1789 - accuracy: 0.9459
1536/1688 [==========================>...] - ETA: 0s - loss: 0.1776 - accuracy: 0.9462
1557/1688 [==========================>...] - ETA: 0s - loss: 0.1763 - accuracy: 0.9467
1579/1688 [===========================>..] - ETA: 0s - loss: 0.1752 - accuracy: 0.9470
1601/1688 [===========================>..] - ETA: 0s - loss: 0.1736 - accuracy: 0.9475
1623/1688 [===========================>..] - ETA: 0s - loss: 0.1723 - accuracy: 0.9479
1645/1688 [============================>.] - ETA: 0s - loss: 0.1710 - accuracy: 0.9482
1667/1688 [============================>.] - ETA: 0s - loss: 0.1705 - accuracy: 0.9484
1688/1688 [==============================] - ETA: 0s - loss: 0.1693 - accuracy: 0.9487
1688/1688 [==============================] - 6s 3ms/step - loss: 0.1693 - accuracy: 0.9487 - val_loss: 0.0752 - val_accuracy: 0.9777
Epoch 2/10

   1/1688 [..............................] - ETA: 3s - loss: 0.0527 - accuracy: 0.9688
  24/1688 [..............................] - ETA: 3s - loss: 0.0817 - accuracy: 0.9701
  46/1688 [..............................] - ETA: 3s - loss: 0.0801 - accuracy: 0.9742
  69/1688 [>.............................] - ETA: 3s - loss: 0.0702 - accuracy: 0.9755
  92/1688 [>.............................] - ETA: 3s - loss: 0.0683 - accuracy: 0.9776
 115/1688 [=>............................] - ETA: 3s - loss: 0.0656 - accuracy: 0.9783
 138/1688 [=>............................] - ETA: 3s - loss: 0.0622 - accuracy: 0.9798
 160/1688 [=>............................] - ETA: 3s - loss: 0.0630 - accuracy: 0.9799
 183/1688 [==>...........................] - ETA: 3s - loss: 0.0673 - accuracy: 0.9793
 206/1688 [==>...........................] - ETA: 3s - loss: 0.0674 - accuracy: 0.9794
 229/1688 [===>..........................] - ETA: 3s - loss: 0.0681 - accuracy: 0.9779
 253/1688 [===>..........................] - ETA: 3s - loss: 0.0675 - accuracy: 0.9786
 275/1688 [===>..........................] - ETA: 3s - loss: 0.0654 - accuracy: 0.9793
 298/1688 [====>.........................] - ETA: 3s - loss: 0.0653 - accuracy: 0.9788
 321/1688 [====>.........................] - ETA: 3s - loss: 0.0672 - accuracy: 0.9787
 344/1688 [=====>........................] - ETA: 3s - loss: 0.0677 - accuracy: 0.9783
 367/1688 [=====>........................] - ETA: 2s - loss: 0.0694 - accuracy: 0.9779
 390/1688 [=====>........................] - ETA: 2s - loss: 0.0703 - accuracy: 0.9777
 413/1688 [======>.......................] - ETA: 2s - loss: 0.0702 - accuracy: 0.9775
 436/1688 [======>.......................] - ETA: 2s - loss: 0.0705 - accuracy: 0.9777
 459/1688 [=======>......................] - ETA: 2s - loss: 0.0713 - accuracy: 0.9771
 482/1688 [=======>......................] - ETA: 2s - loss: 0.0708 - accuracy: 0.9774
 505/1688 [=======>......................] - ETA: 2s - loss: 0.0705 - accuracy: 0.9774
 528/1688 [========>.....................] - ETA: 2s - loss: 0.0704 - accuracy: 0.9775
 552/1688 [========>.....................] - ETA: 2s - loss: 0.0699 - accuracy: 0.9776
 575/1688 [=========>....................] - ETA: 2s - loss: 0.0695 - accuracy: 0.9778
 598/1688 [=========>....................] - ETA: 2s - loss: 0.0696 - accuracy: 0.9778
 621/1688 [==========>...................] - ETA: 2s - loss: 0.0700 - accuracy: 0.9775
 644/1688 [==========>...................] - ETA: 2s - loss: 0.0700 - accuracy: 0.9776
 666/1688 [==========>...................] - ETA: 2s - loss: 0.0705 - accuracy: 0.9777
 689/1688 [===========>..................] - ETA: 2s - loss: 0.0714 - accuracy: 0.9777
 712/1688 [===========>..................] - ETA: 2s - loss: 0.0713 - accuracy: 0.9778
 734/1688 [============>.................] - ETA: 2s - loss: 0.0713 - accuracy: 0.9779
 757/1688 [============>.................] - ETA: 2s - loss: 0.0711 - accuracy: 0.9778
 780/1688 [============>.................] - ETA: 2s - loss: 0.0709 - accuracy: 0.9778
 802/1688 [=============>................] - ETA: 1s - loss: 0.0718 - accuracy: 0.9776
 825/1688 [=============>................] - ETA: 1s - loss: 0.0721 - accuracy: 0.9775
 848/1688 [==============>...............] - ETA: 1s - loss: 0.0721 - accuracy: 0.9776
 871/1688 [==============>...............] - ETA: 1s - loss: 0.0719 - accuracy: 0.9776
 893/1688 [==============>...............] - ETA: 1s - loss: 0.0715 - accuracy: 0.9778
 915/1688 [===============>..............] - ETA: 1s - loss: 0.0718 - accuracy: 0.9778
 938/1688 [===============>..............] - ETA: 1s - loss: 0.0719 - accuracy: 0.9778
 961/1688 [================>.............] - ETA: 1s - loss: 0.0722 - accuracy: 0.9777
 984/1688 [================>.............] - ETA: 1s - loss: 0.0713 - accuracy: 0.9780
1007/1688 [================>.............] - ETA: 1s - loss: 0.0709 - accuracy: 0.9782
1030/1688 [=================>............] - ETA: 1s - loss: 0.0703 - accuracy: 0.9783
1052/1688 [=================>............] - ETA: 1s - loss: 0.0704 - accuracy: 0.9783
1075/1688 [==================>...........] - ETA: 1s - loss: 0.0713 - accuracy: 0.9781
1098/1688 [==================>...........] - ETA: 1s - loss: 0.0713 - accuracy: 0.9780
1121/1688 [==================>...........] - ETA: 1s - loss: 0.0713 - accuracy: 0.9781
1144/1688 [===================>..........] - ETA: 1s - loss: 0.0715 - accuracy: 0.9780
1167/1688 [===================>..........] - ETA: 1s - loss: 0.0716 - accuracy: 0.9780
1190/1688 [====================>.........] - ETA: 1s - loss: 0.0714 - accuracy: 0.9780
1213/1688 [====================>.........] - ETA: 1s - loss: 0.0710 - accuracy: 0.9781
1236/1688 [====================>.........] - ETA: 1s - loss: 0.0714 - accuracy: 0.9781
1260/1688 [=====================>........] - ETA: 0s - loss: 0.0708 - accuracy: 0.9782
1282/1688 [=====================>........] - ETA: 0s - loss: 0.0709 - accuracy: 0.9782
1305/1688 [======================>.......] - ETA: 0s - loss: 0.0710 - accuracy: 0.9781
1328/1688 [======================>.......] - ETA: 0s - loss: 0.0711 - accuracy: 0.9782
1350/1688 [======================>.......] - ETA: 0s - loss: 0.0714 - accuracy: 0.9781
1372/1688 [=======================>......] - ETA: 0s - loss: 0.0713 - accuracy: 0.9781
1395/1688 [=======================>......] - ETA: 0s - loss: 0.0710 - accuracy: 0.9782
1418/1688 [========================>.....] - ETA: 0s - loss: 0.0708 - accuracy: 0.9783
1440/1688 [========================>.....] - ETA: 0s - loss: 0.0707 - accuracy: 0.9783
1462/1688 [========================>.....] - ETA: 0s - loss: 0.0707 - accuracy: 0.9784
1485/1688 [=========================>....] - ETA: 0s - loss: 0.0707 - accuracy: 0.9784
1508/1688 [=========================>....] - ETA: 0s - loss: 0.0704 - accuracy: 0.9784
1531/1688 [==========================>...] - ETA: 0s - loss: 0.0708 - accuracy: 0.9783
1553/1688 [==========================>...] - ETA: 0s - loss: 0.0706 - accuracy: 0.9783
1576/1688 [===========================>..] - ETA: 0s - loss: 0.0706 - accuracy: 0.9782
1600/1688 [===========================>..] - ETA: 0s - loss: 0.0702 - accuracy: 0.9783
1623/1688 [===========================>..] - ETA: 0s - loss: 0.0703 - accuracy: 0.9784
1646/1688 [============================>.] - ETA: 0s - loss: 0.0702 - accuracy: 0.9784
1669/1688 [============================>.] - ETA: 0s - loss: 0.0699 - accuracy: 0.9785
1688/1688 [==============================] - 4s 2ms/step - loss: 0.0699 - accuracy: 0.9786 - val_loss: 0.0596 - val_accuracy: 0.9823
Epoch 3/10

   1/1688 [..............................] - ETA: 3s - loss: 0.0074 - accuracy: 1.0000
  24/1688 [..............................] - ETA: 3s - loss: 0.0410 - accuracy: 0.9870
  47/1688 [..............................] - ETA: 3s - loss: 0.0451 - accuracy: 0.9880
  69/1688 [>.............................] - ETA: 3s - loss: 0.0419 - accuracy: 0.9887
  92/1688 [>.............................] - ETA: 3s - loss: 0.0402 - accuracy: 0.9885
 115/1688 [=>............................] - ETA: 3s - loss: 0.0461 - accuracy: 0.9856
 138/1688 [=>............................] - ETA: 3s - loss: 0.0436 - accuracy: 0.9866
 161/1688 [=>............................] - ETA: 3s - loss: 0.0463 - accuracy: 0.9858
 184/1688 [==>...........................] - ETA: 3s - loss: 0.0448 - accuracy: 0.9861
 207/1688 [==>...........................] - ETA: 3s - loss: 0.0475 - accuracy: 0.9845
 229/1688 [===>..........................] - ETA: 3s - loss: 0.0476 - accuracy: 0.9844
 252/1688 [===>..........................] - ETA: 3s - loss: 0.0475 - accuracy: 0.9844
 275/1688 [===>..........................] - ETA: 3s - loss: 0.0484 - accuracy: 0.9842
 298/1688 [====>.........................] - ETA: 3s - loss: 0.0478 - accuracy: 0.9842
 320/1688 [====>.........................] - ETA: 3s - loss: 0.0463 - accuracy: 0.9849
 343/1688 [=====>........................] - ETA: 3s - loss: 0.0461 - accuracy: 0.9849
 366/1688 [=====>........................] - ETA: 2s - loss: 0.0474 - accuracy: 0.9844
 387/1688 [=====>........................] - ETA: 2s - loss: 0.0496 - accuracy: 0.9837
 408/1688 [======>.......................] - ETA: 2s - loss: 0.0501 - accuracy: 0.9834
 429/1688 [======>.......................] - ETA: 2s - loss: 0.0503 - accuracy: 0.9834
 450/1688 [======>.......................] - ETA: 2s - loss: 0.0500 - accuracy: 0.9837
 471/1688 [=======>......................] - ETA: 2s - loss: 0.0499 - accuracy: 0.9839
 492/1688 [=======>......................] - ETA: 2s - loss: 0.0495 - accuracy: 0.9840
 513/1688 [========>.....................] - ETA: 2s - loss: 0.0492 - accuracy: 0.9842
 534/1688 [========>.....................] - ETA: 2s - loss: 0.0504 - accuracy: 0.9840
 555/1688 [========>.....................] - ETA: 2s - loss: 0.0514 - accuracy: 0.9837
 576/1688 [=========>....................] - ETA: 2s - loss: 0.0516 - accuracy: 0.9837
 597/1688 [=========>....................] - ETA: 2s - loss: 0.0512 - accuracy: 0.9837
 618/1688 [=========>....................] - ETA: 2s - loss: 0.0512 - accuracy: 0.9837
 639/1688 [==========>...................] - ETA: 2s - loss: 0.0510 - accuracy: 0.9836
 660/1688 [==========>...................] - ETA: 2s - loss: 0.0505 - accuracy: 0.9838
 681/1688 [===========>..................] - ETA: 2s - loss: 0.0509 - accuracy: 0.9837
 702/1688 [===========>..................] - ETA: 2s - loss: 0.0516 - accuracy: 0.9834
 724/1688 [===========>..................] - ETA: 2s - loss: 0.0510 - accuracy: 0.9835
 745/1688 [============>.................] - ETA: 2s - loss: 0.0506 - accuracy: 0.9836
 767/1688 [============>.................] - ETA: 2s - loss: 0.0503 - accuracy: 0.9837
 789/1688 [=============>................] - ETA: 2s - loss: 0.0500 - accuracy: 0.9837
 811/1688 [=============>................] - ETA: 2s - loss: 0.0506 - accuracy: 0.9835
 833/1688 [=============>................] - ETA: 1s - loss: 0.0504 - accuracy: 0.9836
 854/1688 [==============>...............] - ETA: 1s - loss: 0.0504 - accuracy: 0.9837
 876/1688 [==============>...............] - ETA: 1s - loss: 0.0504 - accuracy: 0.9838
 897/1688 [==============>...............] - ETA: 1s - loss: 0.0502 - accuracy: 0.9839
 918/1688 [===============>..............] - ETA: 1s - loss: 0.0507 - accuracy: 0.9837
 939/1688 [===============>..............] - ETA: 1s - loss: 0.0508 - accuracy: 0.9838
 960/1688 [================>.............] - ETA: 1s - loss: 0.0508 - accuracy: 0.9839
 982/1688 [================>.............] - ETA: 1s - loss: 0.0503 - accuracy: 0.9841
1004/1688 [================>.............] - ETA: 1s - loss: 0.0508 - accuracy: 0.9839
1025/1688 [=================>............] - ETA: 1s - loss: 0.0508 - accuracy: 0.9841
1046/1688 [=================>............] - ETA: 1s - loss: 0.0510 - accuracy: 0.9840
1067/1688 [=================>............] - ETA: 1s - loss: 0.0509 - accuracy: 0.9841
1089/1688 [==================>...........] - ETA: 1s - loss: 0.0513 - accuracy: 0.9840
1110/1688 [==================>...........] - ETA: 1s - loss: 0.0514 - accuracy: 0.9838
1131/1688 [===================>..........] - ETA: 1s - loss: 0.0515 - accuracy: 0.9839
1153/1688 [===================>..........] - ETA: 1s - loss: 0.0516 - accuracy: 0.9838
1174/1688 [===================>..........] - ETA: 1s - loss: 0.0520 - accuracy: 0.9836
1195/1688 [====================>.........] - ETA: 1s - loss: 0.0520 - accuracy: 0.9836
1216/1688 [====================>.........] - ETA: 1s - loss: 0.0518 - accuracy: 0.9837
1238/1688 [=====================>........] - ETA: 1s - loss: 0.0515 - accuracy: 0.9837
1259/1688 [=====================>........] - ETA: 1s - loss: 0.0514 - accuracy: 0.9837
1280/1688 [=====================>........] - ETA: 0s - loss: 0.0513 - accuracy: 0.9837
1301/1688 [======================>.......] - ETA: 0s - loss: 0.0511 - accuracy: 0.9837
1323/1688 [======================>.......] - ETA: 0s - loss: 0.0510 - accuracy: 0.9837
1344/1688 [======================>.......] - ETA: 0s - loss: 0.0508 - accuracy: 0.9837
1366/1688 [=======================>......] - ETA: 0s - loss: 0.0509 - accuracy: 0.9838
1387/1688 [=======================>......] - ETA: 0s - loss: 0.0511 - accuracy: 0.9837
1408/1688 [========================>.....] - ETA: 0s - loss: 0.0509 - accuracy: 0.9837
1429/1688 [========================>.....] - ETA: 0s - loss: 0.0508 - accuracy: 0.9838
1450/1688 [========================>.....] - ETA: 0s - loss: 0.0504 - accuracy: 0.9839
1471/1688 [=========================>....] - ETA: 0s - loss: 0.0510 - accuracy: 0.9838
1492/1688 [=========================>....] - ETA: 0s - loss: 0.0512 - accuracy: 0.9837
1514/1688 [=========================>....] - ETA: 0s - loss: 0.0508 - accuracy: 0.9839
1535/1688 [==========================>...] - ETA: 0s - loss: 0.0506 - accuracy: 0.9839
1556/1688 [==========================>...] - ETA: 0s - loss: 0.0504 - accuracy: 0.9840
1576/1688 [===========================>..] - ETA: 0s - loss: 0.0501 - accuracy: 0.9841
1596/1688 [===========================>..] - ETA: 0s - loss: 0.0500 - accuracy: 0.9841
1616/1688 [===========================>..] - ETA: 0s - loss: 0.0499 - accuracy: 0.9841
1636/1688 [============================>.] - ETA: 0s - loss: 0.0498 - accuracy: 0.9842
1656/1688 [============================>.] - ETA: 0s - loss: 0.0499 - accuracy: 0.9841
1676/1688 [============================>.] - ETA: 0s - loss: 0.0500 - accuracy: 0.9841
1688/1688 [==============================] - 4s 3ms/step - loss: 0.0499 - accuracy: 0.9841 - val_loss: 0.0634 - val_accuracy: 0.9830
Epoch 4/10

   1/1688 [..............................] - ETA: 4s - loss: 0.0418 - accuracy: 0.9688
  21/1688 [..............................] - ETA: 4s - loss: 0.0421 - accuracy: 0.9866
  41/1688 [..............................] - ETA: 4s - loss: 0.0292 - accuracy: 0.9909
  61/1688 [>.............................] - ETA: 4s - loss: 0.0285 - accuracy: 0.9913
  81/1688 [>.............................] - ETA: 4s - loss: 0.0292 - accuracy: 0.9900
 101/1688 [>.............................] - ETA: 4s - loss: 0.0320 - accuracy: 0.9901
 121/1688 [=>............................] - ETA: 4s - loss: 0.0324 - accuracy: 0.9899
 141/1688 [=>............................] - ETA: 3s - loss: 0.0341 - accuracy: 0.9902
 161/1688 [=>............................] - ETA: 3s - loss: 0.0339 - accuracy: 0.9901
 181/1688 [==>...........................] - ETA: 3s - loss: 0.0356 - accuracy: 0.9891
 201/1688 [==>...........................] - ETA: 3s - loss: 0.0370 - accuracy: 0.9885
 221/1688 [==>...........................] - ETA: 3s - loss: 0.0360 - accuracy: 0.9888
 241/1688 [===>..........................] - ETA: 3s - loss: 0.0367 - accuracy: 0.9886
 261/1688 [===>..........................] - ETA: 3s - loss: 0.0363 - accuracy: 0.9889
 280/1688 [===>..........................] - ETA: 3s - loss: 0.0359 - accuracy: 0.9888
 300/1688 [====>.........................] - ETA: 3s - loss: 0.0366 - accuracy: 0.9886
 320/1688 [====>.........................] - ETA: 3s - loss: 0.0376 - accuracy: 0.9885
 340/1688 [=====>........................] - ETA: 3s - loss: 0.0369 - accuracy: 0.9889
 360/1688 [=====>........................] - ETA: 3s - loss: 0.0364 - accuracy: 0.9890
 380/1688 [=====>........................] - ETA: 3s - loss: 0.0361 - accuracy: 0.9888
 400/1688 [======>.......................] - ETA: 3s - loss: 0.0362 - accuracy: 0.9889
 420/1688 [======>.......................] - ETA: 3s - loss: 0.0353 - accuracy: 0.9891
 440/1688 [======>.......................] - ETA: 3s - loss: 0.0363 - accuracy: 0.9888
 461/1688 [=======>......................] - ETA: 3s - loss: 0.0354 - accuracy: 0.9891
 481/1688 [=======>......................] - ETA: 3s - loss: 0.0356 - accuracy: 0.9889
 501/1688 [=======>......................] - ETA: 3s - loss: 0.0363 - accuracy: 0.9889
 521/1688 [========>.....................] - ETA: 2s - loss: 0.0357 - accuracy: 0.9890
 541/1688 [========>.....................] - ETA: 2s - loss: 0.0359 - accuracy: 0.9889
 561/1688 [========>.....................] - ETA: 2s - loss: 0.0359 - accuracy: 0.9889
 581/1688 [=========>....................] - ETA: 2s - loss: 0.0362 - accuracy: 0.9889
 601/1688 [=========>....................] - ETA: 2s - loss: 0.0365 - accuracy: 0.9888
 621/1688 [==========>...................] - ETA: 2s - loss: 0.0362 - accuracy: 0.9889
 641/1688 [==========>...................] - ETA: 2s - loss: 0.0364 - accuracy: 0.9889
 661/1688 [==========>...................] - ETA: 2s - loss: 0.0364 - accuracy: 0.9889
 680/1688 [===========>..................] - ETA: 2s - loss: 0.0365 - accuracy: 0.9889
 700/1688 [===========>..................] - ETA: 2s - loss: 0.0361 - accuracy: 0.9890
 720/1688 [===========>..................] - ETA: 2s - loss: 0.0356 - accuracy: 0.9892
 740/1688 [============>.................] - ETA: 2s - loss: 0.0355 - accuracy: 0.9893
 760/1688 [============>.................] - ETA: 2s - loss: 0.0366 - accuracy: 0.9888
 780/1688 [============>.................] - ETA: 2s - loss: 0.0363 - accuracy: 0.9890
 800/1688 [=============>................] - ETA: 2s - loss: 0.0363 - accuracy: 0.9891
 820/1688 [=============>................] - ETA: 2s - loss: 0.0367 - accuracy: 0.9889
 840/1688 [=============>................] - ETA: 2s - loss: 0.0366 - accuracy: 0.9889
 860/1688 [==============>...............] - ETA: 2s - loss: 0.0368 - accuracy: 0.9888
 880/1688 [==============>...............] - ETA: 2s - loss: 0.0373 - accuracy: 0.9885
 901/1688 [===============>..............] - ETA: 2s - loss: 0.0370 - accuracy: 0.9886
 921/1688 [===============>..............] - ETA: 1s - loss: 0.0372 - accuracy: 0.9885
 941/1688 [===============>..............] - ETA: 1s - loss: 0.0378 - accuracy: 0.9884
 962/1688 [================>.............] - ETA: 1s - loss: 0.0378 - accuracy: 0.9885
 982/1688 [================>.............] - ETA: 1s - loss: 0.0383 - accuracy: 0.9884
1002/1688 [================>.............] - ETA: 1s - loss: 0.0385 - accuracy: 0.9883
1022/1688 [=================>............] - ETA: 1s - loss: 0.0387 - accuracy: 0.9882
1042/1688 [=================>............] - ETA: 1s - loss: 0.0386 - accuracy: 0.9882
1062/1688 [=================>............] - ETA: 1s - loss: 0.0384 - accuracy: 0.9882
1082/1688 [==================>...........] - ETA: 1s - loss: 0.0386 - accuracy: 0.9882
1102/1688 [==================>...........] - ETA: 1s - loss: 0.0390 - accuracy: 0.9881
1122/1688 [==================>...........] - ETA: 1s - loss: 0.0390 - accuracy: 0.9880
1141/1688 [===================>..........] - ETA: 1s - loss: 0.0389 - accuracy: 0.9880
1161/1688 [===================>..........] - ETA: 1s - loss: 0.0388 - accuracy: 0.9880
1181/1688 [===================>..........] - ETA: 1s - loss: 0.0386 - accuracy: 0.9881
1201/1688 [====================>.........] - ETA: 1s - loss: 0.0386 - accuracy: 0.9882
1221/1688 [====================>.........] - ETA: 1s - loss: 0.0388 - accuracy: 0.9881
1241/1688 [=====================>........] - ETA: 1s - loss: 0.0390 - accuracy: 0.9881
1261/1688 [=====================>........] - ETA: 1s - loss: 0.0389 - accuracy: 0.9882
1281/1688 [=====================>........] - ETA: 1s - loss: 0.0389 - accuracy: 0.9880
1301/1688 [======================>.......] - ETA: 0s - loss: 0.0388 - accuracy: 0.9880
1321/1688 [======================>.......] - ETA: 0s - loss: 0.0388 - accuracy: 0.9880
1341/1688 [======================>.......] - ETA: 0s - loss: 0.0389 - accuracy: 0.9880
1361/1688 [=======================>......] - ETA: 0s - loss: 0.0390 - accuracy: 0.9880
1381/1688 [=======================>......] - ETA: 0s - loss: 0.0389 - accuracy: 0.9880
1401/1688 [=======================>......] - ETA: 0s - loss: 0.0390 - accuracy: 0.9880
1421/1688 [========================>.....] - ETA: 0s - loss: 0.0388 - accuracy: 0.9881
1441/1688 [========================>.....] - ETA: 0s - loss: 0.0388 - accuracy: 0.9881
1461/1688 [========================>.....] - ETA: 0s - loss: 0.0391 - accuracy: 0.9880
1481/1688 [=========================>....] - ETA: 0s - loss: 0.0390 - accuracy: 0.9880
1501/1688 [=========================>....] - ETA: 0s - loss: 0.0391 - accuracy: 0.9879
1521/1688 [==========================>...] - ETA: 0s - loss: 0.0392 - accuracy: 0.9879
1541/1688 [==========================>...] - ETA: 0s - loss: 0.0391 - accuracy: 0.9880
1561/1688 [==========================>...] - ETA: 0s - loss: 0.0393 - accuracy: 0.9880
1581/1688 [===========================>..] - ETA: 0s - loss: 0.0393 - accuracy: 0.9880
1601/1688 [===========================>..] - ETA: 0s - loss: 0.0395 - accuracy: 0.9879
1621/1688 [===========================>..] - ETA: 0s - loss: 0.0395 - accuracy: 0.9879
1640/1688 [============================>.] - ETA: 0s - loss: 0.0396 - accuracy: 0.9878
1660/1688 [============================>.] - ETA: 0s - loss: 0.0397 - accuracy: 0.9878
1680/1688 [============================>.] - ETA: 0s - loss: 0.0397 - accuracy: 0.9877
1688/1688 [==============================] - 5s 3ms/step - loss: 0.0399 - accuracy: 0.9877 - val_loss: 0.0662 - val_accuracy: 0.9823
Epoch 5/10

   1/1688 [..............................] - ETA: 4s - loss: 0.0247 - accuracy: 1.0000
  21/1688 [..............................] - ETA: 4s - loss: 0.0445 - accuracy: 0.9881
  41/1688 [..............................] - ETA: 4s - loss: 0.0401 - accuracy: 0.9863
  61/1688 [>.............................] - ETA: 4s - loss: 0.0399 - accuracy: 0.9872
  81/1688 [>.............................] - ETA: 4s - loss: 0.0376 - accuracy: 0.9865
 101/1688 [>.............................] - ETA: 4s - loss: 0.0384 - accuracy: 0.9861
 121/1688 [=>............................] - ETA: 4s - loss: 0.0363 - accuracy: 0.9871
 141/1688 [=>............................] - ETA: 4s - loss: 0.0363 - accuracy: 0.9871
 161/1688 [=>............................] - ETA: 3s - loss: 0.0364 - accuracy: 0.9876
 181/1688 [==>...........................] - ETA: 3s - loss: 0.0347 - accuracy: 0.9883
 201/1688 [==>...........................] - ETA: 3s - loss: 0.0333 - accuracy: 0.9887
 221/1688 [==>...........................] - ETA: 3s - loss: 0.0328 - accuracy: 0.9888
 241/1688 [===>..........................] - ETA: 3s - loss: 0.0316 - accuracy: 0.9895
 261/1688 [===>..........................] - ETA: 3s - loss: 0.0304 - accuracy: 0.9901
 281/1688 [===>..........................] - ETA: 3s - loss: 0.0299 - accuracy: 0.9900
 301/1688 [====>.........................] - ETA: 3s - loss: 0.0298 - accuracy: 0.9901
 321/1688 [====>.........................] - ETA: 3s - loss: 0.0307 - accuracy: 0.9898
 341/1688 [=====>........................] - ETA: 3s - loss: 0.0311 - accuracy: 0.9896
 361/1688 [=====>........................] - ETA: 3s - loss: 0.0305 - accuracy: 0.9898
 381/1688 [=====>........................] - ETA: 3s - loss: 0.0305 - accuracy: 0.9895
 401/1688 [======>.......................] - ETA: 3s - loss: 0.0304 - accuracy: 0.9896
 421/1688 [======>.......................] - ETA: 3s - loss: 0.0299 - accuracy: 0.9898
 441/1688 [======>.......................] - ETA: 3s - loss: 0.0299 - accuracy: 0.9900
 461/1688 [=======>......................] - ETA: 3s - loss: 0.0317 - accuracy: 0.9899
 480/1688 [=======>......................] - ETA: 3s - loss: 0.0313 - accuracy: 0.9900
 500/1688 [=======>......................] - ETA: 3s - loss: 0.0311 - accuracy: 0.9899
 520/1688 [========>.....................] - ETA: 3s - loss: 0.0311 - accuracy: 0.9900
 540/1688 [========>.....................] - ETA: 2s - loss: 0.0313 - accuracy: 0.9898
 560/1688 [========>.....................] - ETA: 2s - loss: 0.0314 - accuracy: 0.9896
 579/1688 [=========>....................] - ETA: 2s - loss: 0.0316 - accuracy: 0.9893
 599/1688 [=========>....................] - ETA: 2s - loss: 0.0317 - accuracy: 0.9893
 619/1688 [==========>...................] - ETA: 2s - loss: 0.0330 - accuracy: 0.9888
 638/1688 [==========>...................] - ETA: 2s - loss: 0.0338 - accuracy: 0.9884
 658/1688 [==========>...................] - ETA: 2s - loss: 0.0334 - accuracy: 0.9886
 678/1688 [===========>..................] - ETA: 2s - loss: 0.0338 - accuracy: 0.9885
 698/1688 [===========>..................] - ETA: 2s - loss: 0.0339 - accuracy: 0.9885
 718/1688 [===========>..................] - ETA: 2s - loss: 0.0341 - accuracy: 0.9885
 738/1688 [============>.................] - ETA: 2s - loss: 0.0340 - accuracy: 0.9886
 758/1688 [============>.................] - ETA: 2s - loss: 0.0338 - accuracy: 0.9886
 778/1688 [============>.................] - ETA: 2s - loss: 0.0334 - accuracy: 0.9888
 798/1688 [=============>................] - ETA: 2s - loss: 0.0335 - accuracy: 0.9888
 818/1688 [=============>................] - ETA: 2s - loss: 0.0334 - accuracy: 0.9890
 837/1688 [=============>................] - ETA: 2s - loss: 0.0335 - accuracy: 0.9889
 857/1688 [==============>...............] - ETA: 2s - loss: 0.0337 - accuracy: 0.9890
 877/1688 [==============>...............] - ETA: 2s - loss: 0.0339 - accuracy: 0.9889
 897/1688 [==============>...............] - ETA: 2s - loss: 0.0340 - accuracy: 0.9887
 917/1688 [===============>..............] - ETA: 1s - loss: 0.0340 - accuracy: 0.9888
 937/1688 [===============>..............] - ETA: 1s - loss: 0.0337 - accuracy: 0.9888
 957/1688 [================>.............] - ETA: 1s - loss: 0.0340 - accuracy: 0.9886
 977/1688 [================>.............] - ETA: 1s - loss: 0.0342 - accuracy: 0.9886
 997/1688 [================>.............] - ETA: 1s - loss: 0.0341 - accuracy: 0.9886
1017/1688 [=================>............] - ETA: 1s - loss: 0.0338 - accuracy: 0.9887
1037/1688 [=================>............] - ETA: 1s - loss: 0.0339 - accuracy: 0.9887
1057/1688 [=================>............] - ETA: 1s - loss: 0.0338 - accuracy: 0.9888
1077/1688 [==================>...........] - ETA: 1s - loss: 0.0335 - accuracy: 0.9889
1097/1688 [==================>...........] - ETA: 1s - loss: 0.0338 - accuracy: 0.9887
1117/1688 [==================>...........] - ETA: 1s - loss: 0.0337 - accuracy: 0.9888
1137/1688 [===================>..........] - ETA: 1s - loss: 0.0337 - accuracy: 0.9888
1156/1688 [===================>..........] - ETA: 1s - loss: 0.0338 - accuracy: 0.9888
1176/1688 [===================>..........] - ETA: 1s - loss: 0.0339 - accuracy: 0.9888
1196/1688 [====================>.........] - ETA: 1s - loss: 0.0338 - accuracy: 0.9888
1216/1688 [====================>.........] - ETA: 1s - loss: 0.0340 - accuracy: 0.9887
1236/1688 [====================>.........] - ETA: 1s - loss: 0.0341 - accuracy: 0.9887
1256/1688 [=====================>........] - ETA: 1s - loss: 0.0339 - accuracy: 0.9888
1276/1688 [=====================>........] - ETA: 1s - loss: 0.0342 - accuracy: 0.9887
1296/1688 [======================>.......] - ETA: 1s - loss: 0.0344 - accuracy: 0.9886
1316/1688 [======================>.......] - ETA: 0s - loss: 0.0346 - accuracy: 0.9886
1336/1688 [======================>.......] - ETA: 0s - loss: 0.0344 - accuracy: 0.9886
1356/1688 [=======================>......] - ETA: 0s - loss: 0.0341 - accuracy: 0.9887
1376/1688 [=======================>......] - ETA: 0s - loss: 0.0341 - accuracy: 0.9888
1396/1688 [=======================>......] - ETA: 0s - loss: 0.0339 - accuracy: 0.9888
1416/1688 [========================>.....] - ETA: 0s - loss: 0.0340 - accuracy: 0.9888
1436/1688 [========================>.....] - ETA: 0s - loss: 0.0338 - accuracy: 0.9888
1456/1688 [========================>.....] - ETA: 0s - loss: 0.0339 - accuracy: 0.9889
1476/1688 [=========================>....] - ETA: 0s - loss: 0.0341 - accuracy: 0.9887
1496/1688 [=========================>....] - ETA: 0s - loss: 0.0340 - accuracy: 0.9888
1516/1688 [=========================>....] - ETA: 0s - loss: 0.0337 - accuracy: 0.9889
1536/1688 [==========================>...] - ETA: 0s - loss: 0.0336 - accuracy: 0.9889
1556/1688 [==========================>...] - ETA: 0s - loss: 0.0336 - accuracy: 0.9889
1576/1688 [===========================>..] - ETA: 0s - loss: 0.0337 - accuracy: 0.9889
1596/1688 [===========================>..] - ETA: 0s - loss: 0.0338 - accuracy: 0.9889
1616/1688 [===========================>..] - ETA: 0s - loss: 0.0339 - accuracy: 0.9889
1636/1688 [============================>.] - ETA: 0s - loss: 0.0339 - accuracy: 0.9889
1656/1688 [============================>.] - ETA: 0s - loss: 0.0340 - accuracy: 0.9889
1676/1688 [============================>.] - ETA: 0s - loss: 0.0341 - accuracy: 0.9888
1688/1688 [==============================] - 5s 3ms/step - loss: 0.0342 - accuracy: 0.9888 - val_loss: 0.0541 - val_accuracy: 0.9857
Epoch 6/10

   1/1688 [..............................] - ETA: 3s - loss: 0.0599 - accuracy: 0.9688
  24/1688 [..............................] - ETA: 3s - loss: 0.0193 - accuracy: 0.9909
  47/1688 [..............................] - ETA: 3s - loss: 0.0175 - accuracy: 0.9920
  70/1688 [>.............................] - ETA: 3s - loss: 0.0191 - accuracy: 0.9924
  93/1688 [>.............................] - ETA: 3s - loss: 0.0192 - accuracy: 0.9926
 116/1688 [=>............................] - ETA: 3s - loss: 0.0204 - accuracy: 0.9925
 139/1688 [=>............................] - ETA: 3s - loss: 0.0216 - accuracy: 0.9919
 162/1688 [=>............................] - ETA: 3s - loss: 0.0229 - accuracy: 0.9919
 185/1688 [==>...........................] - ETA: 3s - loss: 0.0234 - accuracy: 0.9910
 207/1688 [==>...........................] - ETA: 3s - loss: 0.0236 - accuracy: 0.9911
 231/1688 [===>..........................] - ETA: 3s - loss: 0.0230 - accuracy: 0.9915
 254/1688 [===>..........................] - ETA: 3s - loss: 0.0230 - accuracy: 0.9916
 276/1688 [===>..........................] - ETA: 3s - loss: 0.0224 - accuracy: 0.9920
 299/1688 [====>.........................] - ETA: 3s - loss: 0.0224 - accuracy: 0.9917
 322/1688 [====>.........................] - ETA: 3s - loss: 0.0227 - accuracy: 0.9918
 345/1688 [=====>........................] - ETA: 3s - loss: 0.0221 - accuracy: 0.9922
 368/1688 [=====>........................] - ETA: 2s - loss: 0.0230 - accuracy: 0.9922
 390/1688 [=====>........................] - ETA: 2s - loss: 0.0232 - accuracy: 0.9922
 413/1688 [======>.......................] - ETA: 2s - loss: 0.0229 - accuracy: 0.9923
 436/1688 [======>.......................] - ETA: 2s - loss: 0.0237 - accuracy: 0.9920
 459/1688 [=======>......................] - ETA: 2s - loss: 0.0244 - accuracy: 0.9920
 482/1688 [=======>......................] - ETA: 2s - loss: 0.0240 - accuracy: 0.9922
 505/1688 [=======>......................] - ETA: 2s - loss: 0.0244 - accuracy: 0.9921
 528/1688 [========>.....................] - ETA: 2s - loss: 0.0246 - accuracy: 0.9920
 551/1688 [========>.....................] - ETA: 2s - loss: 0.0245 - accuracy: 0.9918
 574/1688 [=========>....................] - ETA: 2s - loss: 0.0244 - accuracy: 0.9919
 596/1688 [=========>....................] - ETA: 2s - loss: 0.0241 - accuracy: 0.9920
 619/1688 [==========>...................] - ETA: 2s - loss: 0.0240 - accuracy: 0.9920
 641/1688 [==========>...................] - ETA: 2s - loss: 0.0246 - accuracy: 0.9919
 664/1688 [==========>...................] - ETA: 2s - loss: 0.0245 - accuracy: 0.9919
 687/1688 [===========>..................] - ETA: 2s - loss: 0.0248 - accuracy: 0.9918
 710/1688 [===========>..................] - ETA: 2s - loss: 0.0248 - accuracy: 0.9918
 733/1688 [============>.................] - ETA: 2s - loss: 0.0247 - accuracy: 0.9918
 756/1688 [============>.................] - ETA: 2s - loss: 0.0247 - accuracy: 0.9916
 779/1688 [============>.................] - ETA: 2s - loss: 0.0246 - accuracy: 0.9917
 802/1688 [=============>................] - ETA: 1s - loss: 0.0254 - accuracy: 0.9915
 825/1688 [=============>................] - ETA: 1s - loss: 0.0259 - accuracy: 0.9913
 848/1688 [==============>...............] - ETA: 1s - loss: 0.0259 - accuracy: 0.9913
 871/1688 [==============>...............] - ETA: 1s - loss: 0.0267 - accuracy: 0.9912
 893/1688 [==============>...............] - ETA: 1s - loss: 0.0265 - accuracy: 0.9913
 914/1688 [===============>..............] - ETA: 1s - loss: 0.0267 - accuracy: 0.9913
 935/1688 [===============>..............] - ETA: 1s - loss: 0.0267 - accuracy: 0.9912
 956/1688 [===============>..............] - ETA: 1s - loss: 0.0266 - accuracy: 0.9912
 977/1688 [================>.............] - ETA: 1s - loss: 0.0271 - accuracy: 0.9911
 998/1688 [================>.............] - ETA: 1s - loss: 0.0270 - accuracy: 0.9911
1019/1688 [=================>............] - ETA: 1s - loss: 0.0266 - accuracy: 0.9912
1040/1688 [=================>............] - ETA: 1s - loss: 0.0268 - accuracy: 0.9911
1062/1688 [=================>............] - ETA: 1s - loss: 0.0269 - accuracy: 0.9911
1083/1688 [==================>...........] - ETA: 1s - loss: 0.0268 - accuracy: 0.9912
1104/1688 [==================>...........] - ETA: 1s - loss: 0.0269 - accuracy: 0.9911
1125/1688 [==================>...........] - ETA: 1s - loss: 0.0272 - accuracy: 0.9911
1146/1688 [===================>..........] - ETA: 1s - loss: 0.0271 - accuracy: 0.9911
1166/1688 [===================>..........] - ETA: 1s - loss: 0.0274 - accuracy: 0.9910
1187/1688 [====================>.........] - ETA: 1s - loss: 0.0274 - accuracy: 0.9910
1209/1688 [====================>.........] - ETA: 1s - loss: 0.0273 - accuracy: 0.9911
1230/1688 [====================>.........] - ETA: 1s - loss: 0.0270 - accuracy: 0.9912
1251/1688 [=====================>........] - ETA: 0s - loss: 0.0268 - accuracy: 0.9912
1272/1688 [=====================>........] - ETA: 0s - loss: 0.0270 - accuracy: 0.9911
1293/1688 [=====================>........] - ETA: 0s - loss: 0.0270 - accuracy: 0.9911
1314/1688 [======================>.......] - ETA: 0s - loss: 0.0270 - accuracy: 0.9911
1332/1688 [======================>.......] - ETA: 0s - loss: 0.0271 - accuracy: 0.9911
1351/1688 [=======================>......] - ETA: 0s - loss: 0.0271 - accuracy: 0.9910
1370/1688 [=======================>......] - ETA: 0s - loss: 0.0273 - accuracy: 0.9909
1388/1688 [=======================>......] - ETA: 0s - loss: 0.0273 - accuracy: 0.9909
1406/1688 [=======================>......] - ETA: 0s - loss: 0.0273 - accuracy: 0.9909
1424/1688 [========================>.....] - ETA: 0s - loss: 0.0276 - accuracy: 0.9908
1442/1688 [========================>.....] - ETA: 0s - loss: 0.0276 - accuracy: 0.9907
1461/1688 [========================>.....] - ETA: 0s - loss: 0.0277 - accuracy: 0.9907
1480/1688 [=========================>....] - ETA: 0s - loss: 0.0278 - accuracy: 0.9908
1498/1688 [=========================>....] - ETA: 0s - loss: 0.0277 - accuracy: 0.9908
1517/1688 [=========================>....] - ETA: 0s - loss: 0.0276 - accuracy: 0.9908
1536/1688 [==========================>...] - ETA: 0s - loss: 0.0277 - accuracy: 0.9908
1554/1688 [==========================>...] - ETA: 0s - loss: 0.0279 - accuracy: 0.9907
1572/1688 [==========================>...] - ETA: 0s - loss: 0.0279 - accuracy: 0.9906
1590/1688 [===========================>..] - ETA: 0s - loss: 0.0280 - accuracy: 0.9906
1608/1688 [===========================>..] - ETA: 0s - loss: 0.0280 - accuracy: 0.9906
1627/1688 [===========================>..] - ETA: 0s - loss: 0.0279 - accuracy: 0.9906
1646/1688 [============================>.] - ETA: 0s - loss: 0.0278 - accuracy: 0.9907
1664/1688 [============================>.] - ETA: 0s - loss: 0.0275 - accuracy: 0.9908
1682/1688 [============================>.] - ETA: 0s - loss: 0.0275 - accuracy: 0.9908
1688/1688 [==============================] - 4s 3ms/step - loss: 0.0276 - accuracy: 0.9908 - val_loss: 0.0689 - val_accuracy: 0.9833
Epoch 7/10

   1/1688 [..............................] - ETA: 3s - loss: 0.0019 - accuracy: 1.0000
  24/1688 [..............................] - ETA: 3s - loss: 0.0179 - accuracy: 0.9948
  47/1688 [..............................] - ETA: 3s - loss: 0.0132 - accuracy: 0.9960
  70/1688 [>.............................] - ETA: 3s - loss: 0.0125 - accuracy: 0.9960
  93/1688 [>.............................] - ETA: 3s - loss: 0.0140 - accuracy: 0.9960
 116/1688 [=>............................] - ETA: 3s - loss: 0.0145 - accuracy: 0.9952
 137/1688 [=>............................] - ETA: 3s - loss: 0.0151 - accuracy: 0.9948
 158/1688 [=>............................] - ETA: 3s - loss: 0.0145 - accuracy: 0.9949
 179/1688 [==>...........................] - ETA: 3s - loss: 0.0152 - accuracy: 0.9948
 201/1688 [==>...........................] - ETA: 3s - loss: 0.0153 - accuracy: 0.9947
 222/1688 [==>...........................] - ETA: 3s - loss: 0.0168 - accuracy: 0.9945
 244/1688 [===>..........................] - ETA: 3s - loss: 0.0163 - accuracy: 0.9947
 265/1688 [===>..........................] - ETA: 3s - loss: 0.0172 - accuracy: 0.9946
 287/1688 [====>.........................] - ETA: 3s - loss: 0.0179 - accuracy: 0.9946
 309/1688 [====>.........................] - ETA: 3s - loss: 0.0180 - accuracy: 0.9944
 331/1688 [====>.........................] - ETA: 3s - loss: 0.0183 - accuracy: 0.9943
 352/1688 [=====>........................] - ETA: 3s - loss: 0.0181 - accuracy: 0.9943
 373/1688 [=====>........................] - ETA: 3s - loss: 0.0180 - accuracy: 0.9943
 394/1688 [======>.......................] - ETA: 3s - loss: 0.0177 - accuracy: 0.9944
 414/1688 [======>.......................] - ETA: 2s - loss: 0.0177 - accuracy: 0.9944
 436/1688 [======>.......................] - ETA: 2s - loss: 0.0175 - accuracy: 0.9944
 457/1688 [=======>......................] - ETA: 2s - loss: 0.0175 - accuracy: 0.9943
 478/1688 [=======>......................] - ETA: 2s - loss: 0.0174 - accuracy: 0.9943
 500/1688 [=======>......................] - ETA: 2s - loss: 0.0178 - accuracy: 0.9940
 521/1688 [========>.....................] - ETA: 2s - loss: 0.0180 - accuracy: 0.9939
 542/1688 [========>.....................] - ETA: 2s - loss: 0.0188 - accuracy: 0.9937
 564/1688 [=========>....................] - ETA: 2s - loss: 0.0189 - accuracy: 0.9935
 585/1688 [=========>....................] - ETA: 2s - loss: 0.0190 - accuracy: 0.9933
 607/1688 [=========>....................] - ETA: 2s - loss: 0.0197 - accuracy: 0.9931
 629/1688 [==========>...................] - ETA: 2s - loss: 0.0196 - accuracy: 0.9932
 651/1688 [==========>...................] - ETA: 2s - loss: 0.0195 - accuracy: 0.9932
 673/1688 [==========>...................] - ETA: 2s - loss: 0.0196 - accuracy: 0.9930
 694/1688 [===========>..................] - ETA: 2s - loss: 0.0200 - accuracy: 0.9930
 716/1688 [===========>..................] - ETA: 2s - loss: 0.0201 - accuracy: 0.9931
 737/1688 [============>.................] - ETA: 2s - loss: 0.0199 - accuracy: 0.9931
 758/1688 [============>.................] - ETA: 2s - loss: 0.0196 - accuracy: 0.9933
 779/1688 [============>.................] - ETA: 2s - loss: 0.0195 - accuracy: 0.9932
 801/1688 [=============>................] - ETA: 2s - loss: 0.0199 - accuracy: 0.9931
 823/1688 [=============>................] - ETA: 2s - loss: 0.0203 - accuracy: 0.9930
 845/1688 [==============>...............] - ETA: 1s - loss: 0.0209 - accuracy: 0.9927
 867/1688 [==============>...............] - ETA: 1s - loss: 0.0207 - accuracy: 0.9928
 889/1688 [==============>...............] - ETA: 1s - loss: 0.0206 - accuracy: 0.9928
 910/1688 [===============>..............] - ETA: 1s - loss: 0.0203 - accuracy: 0.9930
 930/1688 [===============>..............] - ETA: 1s - loss: 0.0202 - accuracy: 0.9930
 950/1688 [===============>..............] - ETA: 1s - loss: 0.0201 - accuracy: 0.9931
 970/1688 [================>.............] - ETA: 1s - loss: 0.0202 - accuracy: 0.9931
 990/1688 [================>.............] - ETA: 1s - loss: 0.0201 - accuracy: 0.9932
1010/1688 [================>.............] - ETA: 1s - loss: 0.0200 - accuracy: 0.9932
1030/1688 [=================>............] - ETA: 1s - loss: 0.0200 - accuracy: 0.9932
1050/1688 [=================>............] - ETA: 1s - loss: 0.0203 - accuracy: 0.9931
1069/1688 [=================>............] - ETA: 1s - loss: 0.0204 - accuracy: 0.9931
1089/1688 [==================>...........] - ETA: 1s - loss: 0.0207 - accuracy: 0.9931
1109/1688 [==================>...........] - ETA: 1s - loss: 0.0206 - accuracy: 0.9931
1129/1688 [===================>..........] - ETA: 1s - loss: 0.0210 - accuracy: 0.9930
1149/1688 [===================>..........] - ETA: 1s - loss: 0.0213 - accuracy: 0.9929
1169/1688 [===================>..........] - ETA: 1s - loss: 0.0215 - accuracy: 0.9927
1189/1688 [====================>.........] - ETA: 1s - loss: 0.0216 - accuracy: 0.9927
1209/1688 [====================>.........] - ETA: 1s - loss: 0.0217 - accuracy: 0.9926
1229/1688 [====================>.........] - ETA: 1s - loss: 0.0216 - accuracy: 0.9927
1248/1688 [=====================>........] - ETA: 1s - loss: 0.0217 - accuracy: 0.9927
1267/1688 [=====================>........] - ETA: 1s - loss: 0.0216 - accuracy: 0.9927
1287/1688 [=====================>........] - ETA: 0s - loss: 0.0214 - accuracy: 0.9928
1307/1688 [======================>.......] - ETA: 0s - loss: 0.0215 - accuracy: 0.9928
1327/1688 [======================>.......] - ETA: 0s - loss: 0.0215 - accuracy: 0.9929
1347/1688 [======================>.......] - ETA: 0s - loss: 0.0217 - accuracy: 0.9928
1367/1688 [=======================>......] - ETA: 0s - loss: 0.0220 - accuracy: 0.9927
1387/1688 [=======================>......] - ETA: 0s - loss: 0.0220 - accuracy: 0.9927
1407/1688 [========================>.....] - ETA: 0s - loss: 0.0220 - accuracy: 0.9927
1427/1688 [========================>.....] - ETA: 0s - loss: 0.0220 - accuracy: 0.9927
1447/1688 [========================>.....] - ETA: 0s - loss: 0.0218 - accuracy: 0.9928
1467/1688 [=========================>....] - ETA: 0s - loss: 0.0220 - accuracy: 0.9927
1487/1688 [=========================>....] - ETA: 0s - loss: 0.0221 - accuracy: 0.9926
1507/1688 [=========================>....] - ETA: 0s - loss: 0.0220 - accuracy: 0.9926
1527/1688 [==========================>...] - ETA: 0s - loss: 0.0222 - accuracy: 0.9926
1546/1688 [==========================>...] - ETA: 0s - loss: 0.0224 - accuracy: 0.9925
1566/1688 [==========================>...] - ETA: 0s - loss: 0.0226 - accuracy: 0.9924
1586/1688 [===========================>..] - ETA: 0s - loss: 0.0230 - accuracy: 0.9923
1606/1688 [===========================>..] - ETA: 0s - loss: 0.0231 - accuracy: 0.9923
1626/1688 [===========================>..] - ETA: 0s - loss: 0.0231 - accuracy: 0.9923
1646/1688 [============================>.] - ETA: 0s - loss: 0.0231 - accuracy: 0.9923
1666/1688 [============================>.] - ETA: 0s - loss: 0.0231 - accuracy: 0.9923
1687/1688 [============================>.] - ETA: 0s - loss: 0.0231 - accuracy: 0.9923
1688/1688 [==============================] - 4s 3ms/step - loss: 0.0231 - accuracy: 0.9923 - val_loss: 0.0655 - val_accuracy: 0.9843
Epoch 8/10

   1/1688 [..............................] - ETA: 4s - loss: 0.0086 - accuracy: 1.0000
  23/1688 [..............................] - ETA: 3s - loss: 0.0201 - accuracy: 0.9932
  45/1688 [..............................] - ETA: 3s - loss: 0.0178 - accuracy: 0.9944
  66/1688 [>.............................] - ETA: 3s - loss: 0.0210 - accuracy: 0.9929
  87/1688 [>.............................] - ETA: 3s - loss: 0.0187 - accuracy: 0.9935
 107/1688 [>.............................] - ETA: 3s - loss: 0.0176 - accuracy: 0.9939
 127/1688 [=>............................] - ETA: 3s - loss: 0.0164 - accuracy: 0.9946
 147/1688 [=>............................] - ETA: 3s - loss: 0.0146 - accuracy: 0.9953
 167/1688 [=>............................] - ETA: 3s - loss: 0.0153 - accuracy: 0.9951
 187/1688 [==>...........................] - ETA: 3s - loss: 0.0145 - accuracy: 0.9955
 207/1688 [==>...........................] - ETA: 3s - loss: 0.0145 - accuracy: 0.9956
 227/1688 [===>..........................] - ETA: 3s - loss: 0.0139 - accuracy: 0.9959
 248/1688 [===>..........................] - ETA: 3s - loss: 0.0134 - accuracy: 0.9960
 268/1688 [===>..........................] - ETA: 3s - loss: 0.0132 - accuracy: 0.9962
 288/1688 [====>.........................] - ETA: 3s - loss: 0.0139 - accuracy: 0.9960
 309/1688 [====>.........................] - ETA: 3s - loss: 0.0146 - accuracy: 0.9957
 329/1688 [====>.........................] - ETA: 3s - loss: 0.0141 - accuracy: 0.9956
 350/1688 [=====>........................] - ETA: 3s - loss: 0.0137 - accuracy: 0.9959
 370/1688 [=====>........................] - ETA: 3s - loss: 0.0133 - accuracy: 0.9961
 390/1688 [=====>........................] - ETA: 3s - loss: 0.0133 - accuracy: 0.9961
 411/1688 [======>.......................] - ETA: 3s - loss: 0.0131 - accuracy: 0.9960
 432/1688 [======>.......................] - ETA: 3s - loss: 0.0134 - accuracy: 0.9959
 452/1688 [=======>......................] - ETA: 3s - loss: 0.0132 - accuracy: 0.9960
 473/1688 [=======>......................] - ETA: 3s - loss: 0.0138 - accuracy: 0.9958
 494/1688 [=======>......................] - ETA: 2s - loss: 0.0137 - accuracy: 0.9958
 515/1688 [========>.....................] - ETA: 2s - loss: 0.0136 - accuracy: 0.9959
 536/1688 [========>.....................] - ETA: 2s - loss: 0.0136 - accuracy: 0.9959
 557/1688 [========>.....................] - ETA: 2s - loss: 0.0137 - accuracy: 0.9959
 577/1688 [=========>....................] - ETA: 2s - loss: 0.0142 - accuracy: 0.9958
 598/1688 [=========>....................] - ETA: 2s - loss: 0.0144 - accuracy: 0.9958
 619/1688 [==========>...................] - ETA: 2s - loss: 0.0144 - accuracy: 0.9957
 640/1688 [==========>...................] - ETA: 2s - loss: 0.0153 - accuracy: 0.9954
 661/1688 [==========>...................] - ETA: 2s - loss: 0.0151 - accuracy: 0.9955
 681/1688 [===========>..................] - ETA: 2s - loss: 0.0152 - accuracy: 0.9953
 701/1688 [===========>..................] - ETA: 2s - loss: 0.0150 - accuracy: 0.9954
 722/1688 [===========>..................] - ETA: 2s - loss: 0.0151 - accuracy: 0.9953
 743/1688 [============>.................] - ETA: 2s - loss: 0.0155 - accuracy: 0.9952
 763/1688 [============>.................] - ETA: 2s - loss: 0.0157 - accuracy: 0.9951
 783/1688 [============>.................] - ETA: 2s - loss: 0.0157 - accuracy: 0.9951
 803/1688 [=============>................] - ETA: 2s - loss: 0.0161 - accuracy: 0.9950
 824/1688 [=============>................] - ETA: 2s - loss: 0.0161 - accuracy: 0.9950
 844/1688 [==============>...............] - ETA: 2s - loss: 0.0161 - accuracy: 0.9950
 864/1688 [==============>...............] - ETA: 2s - loss: 0.0161 - accuracy: 0.9951
 884/1688 [==============>...............] - ETA: 2s - loss: 0.0160 - accuracy: 0.9951
 904/1688 [===============>..............] - ETA: 1s - loss: 0.0165 - accuracy: 0.9949
 924/1688 [===============>..............] - ETA: 1s - loss: 0.0168 - accuracy: 0.9947
 945/1688 [===============>..............] - ETA: 1s - loss: 0.0168 - accuracy: 0.9947
 965/1688 [================>.............] - ETA: 1s - loss: 0.0169 - accuracy: 0.9946
 985/1688 [================>.............] - ETA: 1s - loss: 0.0168 - accuracy: 0.9947
1005/1688 [================>.............] - ETA: 1s - loss: 0.0167 - accuracy: 0.9947
1025/1688 [=================>............] - ETA: 1s - loss: 0.0168 - accuracy: 0.9947
1046/1688 [=================>............] - ETA: 1s - loss: 0.0167 - accuracy: 0.9947
1066/1688 [=================>............] - ETA: 1s - loss: 0.0169 - accuracy: 0.9946
1087/1688 [==================>...........] - ETA: 1s - loss: 0.0172 - accuracy: 0.9946
1107/1688 [==================>...........] - ETA: 1s - loss: 0.0173 - accuracy: 0.9946
1128/1688 [===================>..........] - ETA: 1s - loss: 0.0173 - accuracy: 0.9946
1148/1688 [===================>..........] - ETA: 1s - loss: 0.0175 - accuracy: 0.9945
1169/1688 [===================>..........] - ETA: 1s - loss: 0.0175 - accuracy: 0.9945
1190/1688 [====================>.........] - ETA: 1s - loss: 0.0175 - accuracy: 0.9945
1210/1688 [====================>.........] - ETA: 1s - loss: 0.0176 - accuracy: 0.9945
1230/1688 [====================>.........] - ETA: 1s - loss: 0.0176 - accuracy: 0.9944
1251/1688 [=====================>........] - ETA: 1s - loss: 0.0178 - accuracy: 0.9944
1271/1688 [=====================>........] - ETA: 1s - loss: 0.0178 - accuracy: 0.9943
1291/1688 [=====================>........] - ETA: 0s - loss: 0.0184 - accuracy: 0.9942
1312/1688 [======================>.......] - ETA: 0s - loss: 0.0186 - accuracy: 0.9943
1332/1688 [======================>.......] - ETA: 0s - loss: 0.0186 - accuracy: 0.9943
1352/1688 [=======================>......] - ETA: 0s - loss: 0.0187 - accuracy: 0.9942
1372/1688 [=======================>......] - ETA: 0s - loss: 0.0190 - accuracy: 0.9941
1392/1688 [=======================>......] - ETA: 0s - loss: 0.0188 - accuracy: 0.9941
1412/1688 [========================>.....] - ETA: 0s - loss: 0.0187 - accuracy: 0.9942
1433/1688 [========================>.....] - ETA: 0s - loss: 0.0185 - accuracy: 0.9942
1454/1688 [========================>.....] - ETA: 0s - loss: 0.0184 - accuracy: 0.9942
1474/1688 [=========================>....] - ETA: 0s - loss: 0.0185 - accuracy: 0.9942
1495/1688 [=========================>....] - ETA: 0s - loss: 0.0186 - accuracy: 0.9942
1515/1688 [=========================>....] - ETA: 0s - loss: 0.0185 - accuracy: 0.9942
1536/1688 [==========================>...] - ETA: 0s - loss: 0.0185 - accuracy: 0.9942
1556/1688 [==========================>...] - ETA: 0s - loss: 0.0185 - accuracy: 0.9942
1576/1688 [===========================>..] - ETA: 0s - loss: 0.0186 - accuracy: 0.9942
1596/1688 [===========================>..] - ETA: 0s - loss: 0.0185 - accuracy: 0.9942
1616/1688 [===========================>..] - ETA: 0s - loss: 0.0186 - accuracy: 0.9942
1637/1688 [============================>.] - ETA: 0s - loss: 0.0185 - accuracy: 0.9942
1658/1688 [============================>.] - ETA: 0s - loss: 0.0184 - accuracy: 0.9943
1679/1688 [============================>.] - ETA: 0s - loss: 0.0184 - accuracy: 0.9942
1688/1688 [==============================] - 4s 3ms/step - loss: 0.0184 - accuracy: 0.9943 - val_loss: 0.0693 - val_accuracy: 0.9850
Epoch 9/10

   1/1688 [..............................] - ETA: 3s - loss: 0.0121 - accuracy: 1.0000
  24/1688 [..............................] - ETA: 3s - loss: 0.0235 - accuracy: 0.9922
  47/1688 [..............................] - ETA: 3s - loss: 0.0175 - accuracy: 0.9940
  70/1688 [>.............................] - ETA: 3s - loss: 0.0138 - accuracy: 0.9955
  93/1688 [>.............................] - ETA: 3s - loss: 0.0178 - accuracy: 0.9940
 116/1688 [=>............................] - ETA: 3s - loss: 0.0198 - accuracy: 0.9933
 139/1688 [=>............................] - ETA: 3s - loss: 0.0194 - accuracy: 0.9930
 162/1688 [=>............................] - ETA: 3s - loss: 0.0202 - accuracy: 0.9932
 185/1688 [==>...........................] - ETA: 3s - loss: 0.0200 - accuracy: 0.9936
 208/1688 [==>...........................] - ETA: 3s - loss: 0.0200 - accuracy: 0.9932
 231/1688 [===>..........................] - ETA: 3s - loss: 0.0201 - accuracy: 0.9934
 254/1688 [===>..........................] - ETA: 3s - loss: 0.0202 - accuracy: 0.9936
 277/1688 [===>..........................] - ETA: 3s - loss: 0.0193 - accuracy: 0.9939
 299/1688 [====>.........................] - ETA: 3s - loss: 0.0186 - accuracy: 0.9940
 320/1688 [====>.........................] - ETA: 3s - loss: 0.0185 - accuracy: 0.9940
 341/1688 [=====>........................] - ETA: 3s - loss: 0.0176 - accuracy: 0.9944
 362/1688 [=====>........................] - ETA: 3s - loss: 0.0171 - accuracy: 0.9945
 384/1688 [=====>........................] - ETA: 2s - loss: 0.0172 - accuracy: 0.9945
 405/1688 [======>.......................] - ETA: 2s - loss: 0.0170 - accuracy: 0.9946
 425/1688 [======>.......................] - ETA: 2s - loss: 0.0167 - accuracy: 0.9947
 445/1688 [======>.......................] - ETA: 2s - loss: 0.0163 - accuracy: 0.9947
 465/1688 [=======>......................] - ETA: 2s - loss: 0.0159 - accuracy: 0.9949
 485/1688 [=======>......................] - ETA: 2s - loss: 0.0154 - accuracy: 0.9951
 504/1688 [=======>......................] - ETA: 2s - loss: 0.0154 - accuracy: 0.9952
 524/1688 [========>.....................] - ETA: 2s - loss: 0.0152 - accuracy: 0.9952
 544/1688 [========>.....................] - ETA: 2s - loss: 0.0152 - accuracy: 0.9952
 564/1688 [=========>....................] - ETA: 2s - loss: 0.0159 - accuracy: 0.9950
 584/1688 [=========>....................] - ETA: 2s - loss: 0.0158 - accuracy: 0.9951
 604/1688 [=========>....................] - ETA: 2s - loss: 0.0157 - accuracy: 0.9951
 624/1688 [==========>...................] - ETA: 2s - loss: 0.0156 - accuracy: 0.9951
 643/1688 [==========>...................] - ETA: 2s - loss: 0.0154 - accuracy: 0.9952
 662/1688 [==========>...................] - ETA: 2s - loss: 0.0155 - accuracy: 0.9951
 681/1688 [===========>..................] - ETA: 2s - loss: 0.0157 - accuracy: 0.9950
 701/1688 [===========>..................] - ETA: 2s - loss: 0.0156 - accuracy: 0.9951
 721/1688 [===========>..................] - ETA: 2s - loss: 0.0158 - accuracy: 0.9949
 741/1688 [============>.................] - ETA: 2s - loss: 0.0159 - accuracy: 0.9949
 760/1688 [============>.................] - ETA: 2s - loss: 0.0160 - accuracy: 0.9949
 780/1688 [============>.................] - ETA: 2s - loss: 0.0160 - accuracy: 0.9948
 800/1688 [=============>................] - ETA: 2s - loss: 0.0158 - accuracy: 0.9949
 820/1688 [=============>................] - ETA: 2s - loss: 0.0158 - accuracy: 0.9949
 840/1688 [=============>................] - ETA: 2s - loss: 0.0157 - accuracy: 0.9950
 859/1688 [==============>...............] - ETA: 2s - loss: 0.0157 - accuracy: 0.9951
 879/1688 [==============>...............] - ETA: 1s - loss: 0.0157 - accuracy: 0.9950
 898/1688 [==============>...............] - ETA: 1s - loss: 0.0156 - accuracy: 0.9951
 916/1688 [===============>..............] - ETA: 1s - loss: 0.0155 - accuracy: 0.9951
 934/1688 [===============>..............] - ETA: 1s - loss: 0.0155 - accuracy: 0.9951
 952/1688 [===============>..............] - ETA: 1s - loss: 0.0154 - accuracy: 0.9952
 971/1688 [================>.............] - ETA: 1s - loss: 0.0153 - accuracy: 0.9952
 989/1688 [================>.............] - ETA: 1s - loss: 0.0153 - accuracy: 0.9951
1007/1688 [================>.............] - ETA: 1s - loss: 0.0154 - accuracy: 0.9952
1026/1688 [=================>............] - ETA: 1s - loss: 0.0153 - accuracy: 0.9952
1044/1688 [=================>............] - ETA: 1s - loss: 0.0156 - accuracy: 0.9951
1062/1688 [=================>............] - ETA: 1s - loss: 0.0159 - accuracy: 0.9950
1080/1688 [==================>...........] - ETA: 1s - loss: 0.0160 - accuracy: 0.9949
1098/1688 [==================>...........] - ETA: 1s - loss: 0.0162 - accuracy: 0.9949
1117/1688 [==================>...........] - ETA: 1s - loss: 0.0161 - accuracy: 0.9949
1135/1688 [===================>..........] - ETA: 1s - loss: 0.0160 - accuracy: 0.9949
1154/1688 [===================>..........] - ETA: 1s - loss: 0.0161 - accuracy: 0.9949
1172/1688 [===================>..........] - ETA: 1s - loss: 0.0162 - accuracy: 0.9949
1191/1688 [====================>.........] - ETA: 1s - loss: 0.0161 - accuracy: 0.9949
1210/1688 [====================>.........] - ETA: 1s - loss: 0.0162 - accuracy: 0.9949
1228/1688 [====================>.........] - ETA: 1s - loss: 0.0161 - accuracy: 0.9949
1247/1688 [=====================>........] - ETA: 1s - loss: 0.0161 - accuracy: 0.9949
1265/1688 [=====================>........] - ETA: 1s - loss: 0.0161 - accuracy: 0.9950
1284/1688 [=====================>........] - ETA: 1s - loss: 0.0160 - accuracy: 0.9950
1302/1688 [======================>.......] - ETA: 0s - loss: 0.0160 - accuracy: 0.9950
1320/1688 [======================>.......] - ETA: 0s - loss: 0.0158 - accuracy: 0.9950
1338/1688 [======================>.......] - ETA: 0s - loss: 0.0159 - accuracy: 0.9950
1356/1688 [=======================>......] - ETA: 0s - loss: 0.0158 - accuracy: 0.9950
1375/1688 [=======================>......] - ETA: 0s - loss: 0.0162 - accuracy: 0.9949
1394/1688 [=======================>......] - ETA: 0s - loss: 0.0162 - accuracy: 0.9949
1412/1688 [========================>.....] - ETA: 0s - loss: 0.0162 - accuracy: 0.9949
1430/1688 [========================>.....] - ETA: 0s - loss: 0.0164 - accuracy: 0.9947
1449/1688 [========================>.....] - ETA: 0s - loss: 0.0166 - accuracy: 0.9947
1467/1688 [=========================>....] - ETA: 0s - loss: 0.0166 - accuracy: 0.9947
1486/1688 [=========================>....] - ETA: 0s - loss: 0.0165 - accuracy: 0.9947
1504/1688 [=========================>....] - ETA: 0s - loss: 0.0166 - accuracy: 0.9947
1523/1688 [==========================>...] - ETA: 0s - loss: 0.0168 - accuracy: 0.9946
1542/1688 [==========================>...] - ETA: 0s - loss: 0.0171 - accuracy: 0.9945
1560/1688 [==========================>...] - ETA: 0s - loss: 0.0172 - accuracy: 0.9944
1578/1688 [===========================>..] - ETA: 0s - loss: 0.0171 - accuracy: 0.9944
1596/1688 [===========================>..] - ETA: 0s - loss: 0.0170 - accuracy: 0.9945
1614/1688 [===========================>..] - ETA: 0s - loss: 0.0171 - accuracy: 0.9945
1632/1688 [============================>.] - ETA: 0s - loss: 0.0174 - accuracy: 0.9944
1650/1688 [============================>.] - ETA: 0s - loss: 0.0176 - accuracy: 0.9943
1669/1688 [============================>.] - ETA: 0s - loss: 0.0176 - accuracy: 0.9943
1688/1688 [==============================] - ETA: 0s - loss: 0.0177 - accuracy: 0.9943
1688/1688 [==============================] - 5s 3ms/step - loss: 0.0177 - accuracy: 0.9943 - val_loss: 0.0703 - val_accuracy: 0.9843
Epoch 10/10

   1/1688 [..............................] - ETA: 4s - loss: 0.0307 - accuracy: 1.0000
  19/1688 [..............................] - ETA: 4s - loss: 0.0122 - accuracy: 0.9967
  37/1688 [..............................] - ETA: 4s - loss: 0.0122 - accuracy: 0.9958
  55/1688 [..............................] - ETA: 4s - loss: 0.0112 - accuracy: 0.9960
  74/1688 [>.............................] - ETA: 4s - loss: 0.0144 - accuracy: 0.9945
  92/1688 [>.............................] - ETA: 4s - loss: 0.0124 - accuracy: 0.9956
 110/1688 [>.............................] - ETA: 4s - loss: 0.0132 - accuracy: 0.9955
 128/1688 [=>............................] - ETA: 4s - loss: 0.0122 - accuracy: 0.9958
 147/1688 [=>............................] - ETA: 4s - loss: 0.0116 - accuracy: 0.9962
 165/1688 [=>............................] - ETA: 4s - loss: 0.0110 - accuracy: 0.9966
 183/1688 [==>...........................] - ETA: 4s - loss: 0.0111 - accuracy: 0.9964
 201/1688 [==>...........................] - ETA: 4s - loss: 0.0108 - accuracy: 0.9966
 219/1688 [==>...........................] - ETA: 4s - loss: 0.0103 - accuracy: 0.9967
 237/1688 [===>..........................] - ETA: 4s - loss: 0.0098 - accuracy: 0.9970
 256/1688 [===>..........................] - ETA: 3s - loss: 0.0093 - accuracy: 0.9972
 274/1688 [===>..........................] - ETA: 3s - loss: 0.0091 - accuracy: 0.9973
 292/1688 [====>.........................] - ETA: 3s - loss: 0.0090 - accuracy: 0.9973
 310/1688 [====>.........................] - ETA: 3s - loss: 0.0091 - accuracy: 0.9972
 329/1688 [====>.........................] - ETA: 3s - loss: 0.0090 - accuracy: 0.9972
 347/1688 [=====>........................] - ETA: 3s - loss: 0.0092 - accuracy: 0.9970
 366/1688 [=====>........................] - ETA: 3s - loss: 0.0096 - accuracy: 0.9969
 385/1688 [=====>........................] - ETA: 3s - loss: 0.0097 - accuracy: 0.9968
 403/1688 [======>.......................] - ETA: 3s - loss: 0.0103 - accuracy: 0.9966
 421/1688 [======>.......................] - ETA: 3s - loss: 0.0100 - accuracy: 0.9967
 440/1688 [======>.......................] - ETA: 3s - loss: 0.0100 - accuracy: 0.9967
 458/1688 [=======>......................] - ETA: 3s - loss: 0.0100 - accuracy: 0.9967
 477/1688 [=======>......................] - ETA: 3s - loss: 0.0103 - accuracy: 0.9967
 496/1688 [=======>......................] - ETA: 3s - loss: 0.0102 - accuracy: 0.9967
 514/1688 [========>.....................] - ETA: 3s - loss: 0.0102 - accuracy: 0.9967
 532/1688 [========>.....................] - ETA: 3s - loss: 0.0103 - accuracy: 0.9967
 551/1688 [========>.....................] - ETA: 3s - loss: 0.0101 - accuracy: 0.9968
 570/1688 [=========>....................] - ETA: 3s - loss: 0.0101 - accuracy: 0.9967
 589/1688 [=========>....................] - ETA: 3s - loss: 0.0102 - accuracy: 0.9967
 607/1688 [=========>....................] - ETA: 3s - loss: 0.0104 - accuracy: 0.9967
 626/1688 [==========>...................] - ETA: 2s - loss: 0.0103 - accuracy: 0.9967
 644/1688 [==========>...................] - ETA: 2s - loss: 0.0102 - accuracy: 0.9967
 663/1688 [==========>...................] - ETA: 2s - loss: 0.0103 - accuracy: 0.9967
 681/1688 [===========>..................] - ETA: 2s - loss: 0.0105 - accuracy: 0.9966
 699/1688 [===========>..................] - ETA: 2s - loss: 0.0106 - accuracy: 0.9965
 718/1688 [===========>..................] - ETA: 2s - loss: 0.0106 - accuracy: 0.9966
 737/1688 [============>.................] - ETA: 2s - loss: 0.0108 - accuracy: 0.9965
 755/1688 [============>.................] - ETA: 2s - loss: 0.0108 - accuracy: 0.9965
 773/1688 [============>.................] - ETA: 2s - loss: 0.0107 - accuracy: 0.9965
 792/1688 [=============>................] - ETA: 2s - loss: 0.0109 - accuracy: 0.9964
 811/1688 [=============>................] - ETA: 2s - loss: 0.0113 - accuracy: 0.9963
 830/1688 [=============>................] - ETA: 2s - loss: 0.0115 - accuracy: 0.9962
 848/1688 [==============>...............] - ETA: 2s - loss: 0.0115 - accuracy: 0.9962
 866/1688 [==============>...............] - ETA: 2s - loss: 0.0115 - accuracy: 0.9962
 884/1688 [==============>...............] - ETA: 2s - loss: 0.0117 - accuracy: 0.9961
 903/1688 [===============>..............] - ETA: 2s - loss: 0.0118 - accuracy: 0.9960
 921/1688 [===============>..............] - ETA: 2s - loss: 0.0122 - accuracy: 0.9959
 940/1688 [===============>..............] - ETA: 2s - loss: 0.0122 - accuracy: 0.9958
 959/1688 [================>.............] - ETA: 2s - loss: 0.0123 - accuracy: 0.9958
 978/1688 [================>.............] - ETA: 1s - loss: 0.0121 - accuracy: 0.9959
 996/1688 [================>.............] - ETA: 1s - loss: 0.0122 - accuracy: 0.9959
1014/1688 [=================>............] - ETA: 1s - loss: 0.0126 - accuracy: 0.9958
1032/1688 [=================>............] - ETA: 1s - loss: 0.0128 - accuracy: 0.9957
1050/1688 [=================>............] - ETA: 1s - loss: 0.0128 - accuracy: 0.9957
1068/1688 [=================>............] - ETA: 1s - loss: 0.0129 - accuracy: 0.9957
1086/1688 [==================>...........] - ETA: 1s - loss: 0.0128 - accuracy: 0.9957
1104/1688 [==================>...........] - ETA: 1s - loss: 0.0129 - accuracy: 0.9957
1122/1688 [==================>...........] - ETA: 1s - loss: 0.0130 - accuracy: 0.9957
1141/1688 [===================>..........] - ETA: 1s - loss: 0.0128 - accuracy: 0.9957
1160/1688 [===================>..........] - ETA: 1s - loss: 0.0127 - accuracy: 0.9958
1179/1688 [===================>..........] - ETA: 1s - loss: 0.0128 - accuracy: 0.9957
1198/1688 [====================>.........] - ETA: 1s - loss: 0.0130 - accuracy: 0.9957
1216/1688 [====================>.........] - ETA: 1s - loss: 0.0132 - accuracy: 0.9957
1234/1688 [====================>.........] - ETA: 1s - loss: 0.0131 - accuracy: 0.9957
1253/1688 [=====================>........] - ETA: 1s - loss: 0.0132 - accuracy: 0.9956
1272/1688 [=====================>........] - ETA: 1s - loss: 0.0132 - accuracy: 0.9956
1291/1688 [=====================>........] - ETA: 1s - loss: 0.0133 - accuracy: 0.9955
1310/1688 [======================>.......] - ETA: 1s - loss: 0.0137 - accuracy: 0.9954
1329/1688 [======================>.......] - ETA: 0s - loss: 0.0137 - accuracy: 0.9954
1348/1688 [======================>.......] - ETA: 0s - loss: 0.0140 - accuracy: 0.9953
1366/1688 [=======================>......] - ETA: 0s - loss: 0.0140 - accuracy: 0.9952
1384/1688 [=======================>......] - ETA: 0s - loss: 0.0141 - accuracy: 0.9952
1403/1688 [=======================>......] - ETA: 0s - loss: 0.0143 - accuracy: 0.9951
1422/1688 [========================>.....] - ETA: 0s - loss: 0.0144 - accuracy: 0.9950
1440/1688 [========================>.....] - ETA: 0s - loss: 0.0144 - accuracy: 0.9951
1458/1688 [========================>.....] - ETA: 0s - loss: 0.0146 - accuracy: 0.9950
1476/1688 [=========================>....] - ETA: 0s - loss: 0.0146 - accuracy: 0.9950
1495/1688 [=========================>....] - ETA: 0s - loss: 0.0146 - accuracy: 0.9950
1513/1688 [=========================>....] - ETA: 0s - loss: 0.0146 - accuracy: 0.9950
1531/1688 [==========================>...] - ETA: 0s - loss: 0.0146 - accuracy: 0.9950
1550/1688 [==========================>...] - ETA: 0s - loss: 0.0146 - accuracy: 0.9950
1569/1688 [==========================>...] - ETA: 0s - loss: 0.0146 - accuracy: 0.9950
1587/1688 [===========================>..] - ETA: 0s - loss: 0.0146 - accuracy: 0.9950
1605/1688 [===========================>..] - ETA: 0s - loss: 0.0146 - accuracy: 0.9950
1623/1688 [===========================>..] - ETA: 0s - loss: 0.0147 - accuracy: 0.9950
1642/1688 [============================>.] - ETA: 0s - loss: 0.0147 - accuracy: 0.9950
1661/1688 [============================>.] - ETA: 0s - loss: 0.0147 - accuracy: 0.9951
1680/1688 [============================>.] - ETA: 0s - loss: 0.0148 - accuracy: 0.9950
1688/1688 [==============================] - 5s 3ms/step - loss: 0.0148 - accuracy: 0.9950 - val_loss: 0.0556 - val_accuracy: 0.9870
score = model_keras.evaluate(x_test, y_test, verbose=0)
print('Test accuracy:', score[1])
Test accuracy: 0.9846000075340271

2. Quantize

2.1. 8-bit quantization

An Akida accelerator processes 8 or 4-bits integer activations and weights. Therefore, the floating point Keras model must be quantized in preparation to run on an Akida accelerator.

The QuantizeML quantize function can be used to quantize a Keras model for Akida. For this step in this example, an “8/8/8” quantization scheme will be applied to the floating point Keras model to produce 8-bit weights in the first layer, 8-bit weights in all other layers, and 8-bit activations.

The quantization process results in a Keras model with custom QuantizeML quantized layers substituted for the original Keras layers. All Keras API functions can be applied on this new model: summary(), compile(), fit(). etc.

Note

The quantize function applies several transformations to the original model. For example, it folds the batch normalization layers into the corresponding neural layers. The new weights are computed according to this folding operation.

from quantizeml.models import quantize, QuantizationParams

qparams = QuantizationParams(input_weight_bits=8, weight_bits=8, activation_bits=8)
model_quantized = quantize(model_keras, qparams=qparams)
model_quantized.summary()
/usr/local/lib/python3.11/dist-packages/onnxscript/converter.py:816: FutureWarning: 'onnxscript.values.Op.param_schemas' is deprecated in version 0.1 and will be removed in the future. Please use '.op_signature' instead.
  param_schemas = callee.param_schemas()
/usr/local/lib/python3.11/dist-packages/quantizeml/models/quantize.py:479: UserWarning: Quantizing per-axis with random calibration samples is not accurate.                       Set QuantizationParams.per_tensor_activations=True when calibrating with                        random samples.
  warnings.warn("Quantizing per-axis with random calibration samples is not accurate.\

   1/1024 [..............................] - ETA: 3:08
  57/1024 [>.............................] - ETA: 0s  
 114/1024 [==>...........................] - ETA: 0s
 172/1024 [====>.........................] - ETA: 0s
 230/1024 [=====>........................] - ETA: 0s
 288/1024 [=======>......................] - ETA: 0s
 345/1024 [=========>....................] - ETA: 0s
 402/1024 [==========>...................] - ETA: 0s
 459/1024 [============>.................] - ETA: 0s
 517/1024 [==============>...............] - ETA: 0s
 575/1024 [===============>..............] - ETA: 0s
 632/1024 [=================>............] - ETA: 0s
 690/1024 [===================>..........] - ETA: 0s
 747/1024 [====================>.........] - ETA: 0s
 805/1024 [======================>.......] - ETA: 0s
 863/1024 [========================>.....] - ETA: 0s
 920/1024 [=========================>....] - ETA: 0s
 976/1024 [===========================>..] - ETA: 0s
1024/1024 [==============================] - 1s 879us/step
Model: "mnistnet"
_________________________________________________________________
 Layer (type)                Output Shape              Param #
=================================================================
 rescaling_input (InputLaye  [(None, 28, 28, 1)]       0
 r)

 rescaling (QuantizedRescal  (None, 28, 28, 1)         0
 ing)

 conv2d (QuantizedConv2D)    (None, 13, 13, 32)        320

 re_lu (QuantizedReLU)       (None, 13, 13, 32)        64

 depthwise_conv2d (Quantize  (None, 7, 7, 32)          384
 dDepthwiseConv2D)

 conv2d_1 (QuantizedConv2D)  (None, 7, 7, 64)          2112

 re_lu_1 (QuantizedReLU)     (None, 7, 7, 64)          128

 flatten (QuantizedFlatten)  (None, 3136)              0

 dense (QuantizedDense)      (None, 10)                31370

 dequantizer (Dequantizer)   (None, 10)                0

=================================================================
Total params: 34378 (134.29 KB)
Trainable params: 34122 (133.29 KB)
Non-trainable params: 256 (1.00 KB)
_________________________________________________________________

Note

Note that the number of parameters for the floating and quantized models differs, a consequence of the BatchNormalization folding and the additional parameters added for quantization. For further details, please refer to their respective summary.

Check the quantized model accuracy.

def compile_evaluate(model):
    """ Compiles and evaluates the model, then return accuracy score. """
    model.compile(metrics=['accuracy'])
    return model.evaluate(x_test, y_test, verbose=0)[1]


print('Test accuracy after 8-bit quantization:', compile_evaluate(model_quantized))
Test accuracy after 8-bit quantization: 0.9801999926567078

2.2. Effect of calibration

The previous call to quantize was made with random samples for calibration (default parameters). While the observed drop in accuracy is minimal, that is around 1%, it can be worse on more complex models. Therefore, it is advised to use a set of real samples from the training set for calibration during a call to quantize. Note that this remains a calibration step rather than a training step in that no output labels are required. Furthermore, any relevant data could be used for calibration. The recommended settings for calibration that are widely used to obtain the zoo performance are:

  • 1024 samples

  • a batch size of 100

  • 2 epochs

model_quantized = quantize(model_keras, qparams=qparams,
                           samples=x_train, num_samples=1024, batch_size=100, epochs=2)
 1/11 [=>............................] - ETA: 3s
11/11 [==============================] - 0s 995us/step

 1/11 [=>............................] - ETA: 0s
11/11 [==============================] - 0s 950us/step

Check the accuracy for the quantized and calibrated model.

print('Test accuracy after calibration:', compile_evaluate(model_quantized))
Test accuracy after calibration: 0.984000027179718

Calibrating with real samples on this model recovers the initial float accuracy.

2.3. 4-bit quantization

The accuracy of the 8/8/8 quantized model is equal to that of the Keras floating point model. In some cases, a smaller memory size for the model is required. This can be accomplished through quantization of the model to smaller bitwidths.

The model will now be quantized to 8/4/4, that is 8-bit weights in the first layer with 4-bit weights and activations in all other layers. Such a quantization scheme will usually introduce a performance drop.

qparams = QuantizationParams(input_weight_bits=8, weight_bits=4, activation_bits=4)
model_quantized = quantize(model_keras, qparams=qparams,
                           samples=x_train, num_samples=1024, batch_size=100, epochs=2)
 1/11 [=>............................] - ETA: 1s
11/11 [==============================] - 0s 1ms/step

 1/11 [=>............................] - ETA: 0s
11/11 [==============================] - 0s 1ms/step

Check the 4-bit quantized accuracy.

print('Test accuracy after 4-bit quantization:', compile_evaluate(model_quantized))
Test accuracy after 4-bit quantization: 0.9839000105857849

2.4. Model fine tuning (Quantization Aware Training)

When a model suffers from an accuracy drop after quantization, fine tuning or Quantization Aware Training (QAT) may recover some or all of the original performance.

Note that since this is a fine tuning step, both the number of epochs and learning rate are expected to be lower than during the initial float training.

model_quantized.compile(
    loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
    optimizer=Adam(learning_rate=1e-4),
    metrics=['accuracy'])

model_quantized.fit(x_train, y_train, epochs=5, validation_split=0.1)
Epoch 1/5

   1/1688 [..............................] - ETA: 2:05:02 - loss: 0.0032 - accuracy: 1.0000
  11/1688 [..............................] - ETA: 8s - loss: 0.0116 - accuracy: 0.9972     
  22/1688 [..............................] - ETA: 8s - loss: 0.0095 - accuracy: 0.9972
  33/1688 [..............................] - ETA: 8s - loss: 0.0087 - accuracy: 0.9981
  44/1688 [..............................] - ETA: 8s - loss: 0.0099 - accuracy: 0.9972
  55/1688 [..............................] - ETA: 8s - loss: 0.0089 - accuracy: 0.9977
  66/1688 [>.............................] - ETA: 8s - loss: 0.0104 - accuracy: 0.9972
  77/1688 [>.............................] - ETA: 8s - loss: 0.0106 - accuracy: 0.9968
  88/1688 [>.............................] - ETA: 7s - loss: 0.0108 - accuracy: 0.9964
  99/1688 [>.............................] - ETA: 7s - loss: 0.0114 - accuracy: 0.9962
 109/1688 [>.............................] - ETA: 7s - loss: 0.0107 - accuracy: 0.9966
 119/1688 [=>............................] - ETA: 7s - loss: 0.0102 - accuracy: 0.9966
 130/1688 [=>............................] - ETA: 7s - loss: 0.0108 - accuracy: 0.9962
 141/1688 [=>............................] - ETA: 7s - loss: 0.0113 - accuracy: 0.9962
 152/1688 [=>............................] - ETA: 7s - loss: 0.0108 - accuracy: 0.9965
 163/1688 [=>............................] - ETA: 7s - loss: 0.0104 - accuracy: 0.9967
 173/1688 [==>...........................] - ETA: 7s - loss: 0.0100 - accuracy: 0.9969
 184/1688 [==>...........................] - ETA: 7s - loss: 0.0101 - accuracy: 0.9969
 195/1688 [==>...........................] - ETA: 7s - loss: 0.0098 - accuracy: 0.9971
 206/1688 [==>...........................] - ETA: 7s - loss: 0.0097 - accuracy: 0.9973
 216/1688 [==>...........................] - ETA: 7s - loss: 0.0098 - accuracy: 0.9970
 227/1688 [===>..........................] - ETA: 7s - loss: 0.0102 - accuracy: 0.9970
 238/1688 [===>..........................] - ETA: 7s - loss: 0.0100 - accuracy: 0.9971
 248/1688 [===>..........................] - ETA: 7s - loss: 0.0100 - accuracy: 0.9970
 259/1688 [===>..........................] - ETA: 7s - loss: 0.0098 - accuracy: 0.9970
 270/1688 [===>..........................] - ETA: 7s - loss: 0.0098 - accuracy: 0.9970
 281/1688 [===>..........................] - ETA: 6s - loss: 0.0098 - accuracy: 0.9970
 292/1688 [====>.........................] - ETA: 6s - loss: 0.0098 - accuracy: 0.9970
 303/1688 [====>.........................] - ETA: 6s - loss: 0.0107 - accuracy: 0.9967
 314/1688 [====>.........................] - ETA: 6s - loss: 0.0106 - accuracy: 0.9966
 325/1688 [====>.........................] - ETA: 6s - loss: 0.0105 - accuracy: 0.9966
 336/1688 [====>.........................] - ETA: 6s - loss: 0.0104 - accuracy: 0.9967
 347/1688 [=====>........................] - ETA: 6s - loss: 0.0104 - accuracy: 0.9967
 358/1688 [=====>........................] - ETA: 6s - loss: 0.0106 - accuracy: 0.9966
 369/1688 [=====>........................] - ETA: 6s - loss: 0.0105 - accuracy: 0.9966
 380/1688 [=====>........................] - ETA: 6s - loss: 0.0106 - accuracy: 0.9965
 391/1688 [=====>........................] - ETA: 6s - loss: 0.0106 - accuracy: 0.9966
 402/1688 [======>.......................] - ETA: 6s - loss: 0.0105 - accuracy: 0.9966
 413/1688 [======>.......................] - ETA: 6s - loss: 0.0104 - accuracy: 0.9967
 424/1688 [======>.......................] - ETA: 6s - loss: 0.0105 - accuracy: 0.9967
 434/1688 [======>.......................] - ETA: 6s - loss: 0.0105 - accuracy: 0.9967
 445/1688 [======>.......................] - ETA: 6s - loss: 0.0106 - accuracy: 0.9967
 456/1688 [=======>......................] - ETA: 6s - loss: 0.0106 - accuracy: 0.9966
 467/1688 [=======>......................] - ETA: 6s - loss: 0.0107 - accuracy: 0.9965
 477/1688 [=======>......................] - ETA: 5s - loss: 0.0108 - accuracy: 0.9965
 488/1688 [=======>......................] - ETA: 5s - loss: 0.0106 - accuracy: 0.9965
 499/1688 [=======>......................] - ETA: 5s - loss: 0.0105 - accuracy: 0.9966
 510/1688 [========>.....................] - ETA: 5s - loss: 0.0105 - accuracy: 0.9966
 521/1688 [========>.....................] - ETA: 5s - loss: 0.0105 - accuracy: 0.9966
 532/1688 [========>.....................] - ETA: 5s - loss: 0.0104 - accuracy: 0.9967
 543/1688 [========>.....................] - ETA: 5s - loss: 0.0104 - accuracy: 0.9967
 554/1688 [========>.....................] - ETA: 5s - loss: 0.0102 - accuracy: 0.9967
 565/1688 [=========>....................] - ETA: 5s - loss: 0.0102 - accuracy: 0.9968
 575/1688 [=========>....................] - ETA: 5s - loss: 0.0103 - accuracy: 0.9967
 586/1688 [=========>....................] - ETA: 5s - loss: 0.0102 - accuracy: 0.9968
 597/1688 [=========>....................] - ETA: 5s - loss: 0.0105 - accuracy: 0.9966
 608/1688 [=========>....................] - ETA: 5s - loss: 0.0105 - accuracy: 0.9966
 618/1688 [=========>....................] - ETA: 5s - loss: 0.0105 - accuracy: 0.9966
 628/1688 [==========>...................] - ETA: 5s - loss: 0.0104 - accuracy: 0.9966
 639/1688 [==========>...................] - ETA: 5s - loss: 0.0103 - accuracy: 0.9967
 650/1688 [==========>...................] - ETA: 5s - loss: 0.0102 - accuracy: 0.9967
 660/1688 [==========>...................] - ETA: 5s - loss: 0.0102 - accuracy: 0.9967
 670/1688 [==========>...................] - ETA: 5s - loss: 0.0102 - accuracy: 0.9968
 681/1688 [===========>..................] - ETA: 4s - loss: 0.0101 - accuracy: 0.9968
 692/1688 [===========>..................] - ETA: 4s - loss: 0.0101 - accuracy: 0.9968
 703/1688 [===========>..................] - ETA: 4s - loss: 0.0100 - accuracy: 0.9969
 714/1688 [===========>..................] - ETA: 4s - loss: 0.0100 - accuracy: 0.9969
 725/1688 [===========>..................] - ETA: 4s - loss: 0.0099 - accuracy: 0.9969
 736/1688 [============>.................] - ETA: 4s - loss: 0.0099 - accuracy: 0.9969
 747/1688 [============>.................] - ETA: 4s - loss: 0.0098 - accuracy: 0.9970
 758/1688 [============>.................] - ETA: 4s - loss: 0.0097 - accuracy: 0.9970
 769/1688 [============>.................] - ETA: 4s - loss: 0.0096 - accuracy: 0.9971
 780/1688 [============>.................] - ETA: 4s - loss: 0.0096 - accuracy: 0.9971
 791/1688 [=============>................] - ETA: 4s - loss: 0.0095 - accuracy: 0.9971
 802/1688 [=============>................] - ETA: 4s - loss: 0.0096 - accuracy: 0.9971
 812/1688 [=============>................] - ETA: 4s - loss: 0.0095 - accuracy: 0.9971
 822/1688 [=============>................] - ETA: 4s - loss: 0.0095 - accuracy: 0.9971
 833/1688 [=============>................] - ETA: 4s - loss: 0.0095 - accuracy: 0.9971
 844/1688 [==============>...............] - ETA: 4s - loss: 0.0094 - accuracy: 0.9972
 855/1688 [==============>...............] - ETA: 4s - loss: 0.0094 - accuracy: 0.9972
 866/1688 [==============>...............] - ETA: 4s - loss: 0.0093 - accuracy: 0.9973
 877/1688 [==============>...............] - ETA: 4s - loss: 0.0092 - accuracy: 0.9973
 887/1688 [==============>...............] - ETA: 3s - loss: 0.0093 - accuracy: 0.9972
 897/1688 [==============>...............] - ETA: 3s - loss: 0.0093 - accuracy: 0.9972
 908/1688 [===============>..............] - ETA: 3s - loss: 0.0093 - accuracy: 0.9972
 918/1688 [===============>..............] - ETA: 3s - loss: 0.0092 - accuracy: 0.9972
 928/1688 [===============>..............] - ETA: 3s - loss: 0.0092 - accuracy: 0.9972
 939/1688 [===============>..............] - ETA: 3s - loss: 0.0092 - accuracy: 0.9972
 950/1688 [===============>..............] - ETA: 3s - loss: 0.0093 - accuracy: 0.9972
 961/1688 [================>.............] - ETA: 3s - loss: 0.0093 - accuracy: 0.9972
 972/1688 [================>.............] - ETA: 3s - loss: 0.0093 - accuracy: 0.9972
 983/1688 [================>.............] - ETA: 3s - loss: 0.0092 - accuracy: 0.9972
 994/1688 [================>.............] - ETA: 3s - loss: 0.0092 - accuracy: 0.9972
1005/1688 [================>.............] - ETA: 3s - loss: 0.0092 - accuracy: 0.9973
1016/1688 [=================>............] - ETA: 3s - loss: 0.0092 - accuracy: 0.9973
1026/1688 [=================>............] - ETA: 3s - loss: 0.0091 - accuracy: 0.9973
1037/1688 [=================>............] - ETA: 3s - loss: 0.0091 - accuracy: 0.9973
1048/1688 [=================>............] - ETA: 3s - loss: 0.0091 - accuracy: 0.9973
1058/1688 [=================>............] - ETA: 3s - loss: 0.0091 - accuracy: 0.9973
1068/1688 [=================>............] - ETA: 3s - loss: 0.0090 - accuracy: 0.9973
1079/1688 [==================>...........] - ETA: 3s - loss: 0.0090 - accuracy: 0.9973
1089/1688 [==================>...........] - ETA: 2s - loss: 0.0090 - accuracy: 0.9973
1100/1688 [==================>...........] - ETA: 2s - loss: 0.0090 - accuracy: 0.9973
1111/1688 [==================>...........] - ETA: 2s - loss: 0.0090 - accuracy: 0.9973
1122/1688 [==================>...........] - ETA: 2s - loss: 0.0090 - accuracy: 0.9973
1133/1688 [===================>..........] - ETA: 2s - loss: 0.0090 - accuracy: 0.9973
1143/1688 [===================>..........] - ETA: 2s - loss: 0.0089 - accuracy: 0.9973
1154/1688 [===================>..........] - ETA: 2s - loss: 0.0090 - accuracy: 0.9973
1165/1688 [===================>..........] - ETA: 2s - loss: 0.0090 - accuracy: 0.9973
1176/1688 [===================>..........] - ETA: 2s - loss: 0.0090 - accuracy: 0.9973
1186/1688 [====================>.........] - ETA: 2s - loss: 0.0090 - accuracy: 0.9973
1197/1688 [====================>.........] - ETA: 2s - loss: 0.0089 - accuracy: 0.9974
1208/1688 [====================>.........] - ETA: 2s - loss: 0.0089 - accuracy: 0.9974
1219/1688 [====================>.........] - ETA: 2s - loss: 0.0090 - accuracy: 0.9973
1230/1688 [====================>.........] - ETA: 2s - loss: 0.0089 - accuracy: 0.9974
1241/1688 [=====================>........] - ETA: 2s - loss: 0.0089 - accuracy: 0.9973
1252/1688 [=====================>........] - ETA: 2s - loss: 0.0089 - accuracy: 0.9974
1263/1688 [=====================>........] - ETA: 2s - loss: 0.0089 - accuracy: 0.9974
1273/1688 [=====================>........] - ETA: 2s - loss: 0.0089 - accuracy: 0.9974
1284/1688 [=====================>........] - ETA: 2s - loss: 0.0089 - accuracy: 0.9974
1294/1688 [=====================>........] - ETA: 1s - loss: 0.0088 - accuracy: 0.9974
1305/1688 [======================>.......] - ETA: 1s - loss: 0.0088 - accuracy: 0.9974
1316/1688 [======================>.......] - ETA: 1s - loss: 0.0088 - accuracy: 0.9974
1326/1688 [======================>.......] - ETA: 1s - loss: 0.0087 - accuracy: 0.9975
1336/1688 [======================>.......] - ETA: 1s - loss: 0.0087 - accuracy: 0.9975
1347/1688 [======================>.......] - ETA: 1s - loss: 0.0087 - accuracy: 0.9974
1357/1688 [=======================>......] - ETA: 1s - loss: 0.0086 - accuracy: 0.9975
1368/1688 [=======================>......] - ETA: 1s - loss: 0.0087 - accuracy: 0.9975
1379/1688 [=======================>......] - ETA: 1s - loss: 0.0087 - accuracy: 0.9975
1390/1688 [=======================>......] - ETA: 1s - loss: 0.0088 - accuracy: 0.9975
1401/1688 [=======================>......] - ETA: 1s - loss: 0.0087 - accuracy: 0.9975
1411/1688 [========================>.....] - ETA: 1s - loss: 0.0087 - accuracy: 0.9975
1422/1688 [========================>.....] - ETA: 1s - loss: 0.0088 - accuracy: 0.9974
1432/1688 [========================>.....] - ETA: 1s - loss: 0.0087 - accuracy: 0.9974
1443/1688 [========================>.....] - ETA: 1s - loss: 0.0087 - accuracy: 0.9975
1454/1688 [========================>.....] - ETA: 1s - loss: 0.0087 - accuracy: 0.9975
1465/1688 [=========================>....] - ETA: 1s - loss: 0.0087 - accuracy: 0.9974
1476/1688 [=========================>....] - ETA: 1s - loss: 0.0087 - accuracy: 0.9975
1487/1688 [=========================>....] - ETA: 0s - loss: 0.0086 - accuracy: 0.9975
1497/1688 [=========================>....] - ETA: 0s - loss: 0.0086 - accuracy: 0.9975
1507/1688 [=========================>....] - ETA: 0s - loss: 0.0086 - accuracy: 0.9975
1518/1688 [=========================>....] - ETA: 0s - loss: 0.0085 - accuracy: 0.9975
1528/1688 [==========================>...] - ETA: 0s - loss: 0.0085 - accuracy: 0.9975
1539/1688 [==========================>...] - ETA: 0s - loss: 0.0085 - accuracy: 0.9975
1549/1688 [==========================>...] - ETA: 0s - loss: 0.0085 - accuracy: 0.9975
1560/1688 [==========================>...] - ETA: 0s - loss: 0.0085 - accuracy: 0.9975
1571/1688 [==========================>...] - ETA: 0s - loss: 0.0085 - accuracy: 0.9975
1582/1688 [===========================>..] - ETA: 0s - loss: 0.0085 - accuracy: 0.9975
1593/1688 [===========================>..] - ETA: 0s - loss: 0.0084 - accuracy: 0.9975
1604/1688 [===========================>..] - ETA: 0s - loss: 0.0084 - accuracy: 0.9975
1615/1688 [===========================>..] - ETA: 0s - loss: 0.0084 - accuracy: 0.9975
1626/1688 [===========================>..] - ETA: 0s - loss: 0.0084 - accuracy: 0.9975
1636/1688 [============================>.] - ETA: 0s - loss: 0.0084 - accuracy: 0.9975
1647/1688 [============================>.] - ETA: 0s - loss: 0.0084 - accuracy: 0.9975
1658/1688 [============================>.] - ETA: 0s - loss: 0.0084 - accuracy: 0.9975
1669/1688 [============================>.] - ETA: 0s - loss: 0.0084 - accuracy: 0.9975
1680/1688 [============================>.] - ETA: 0s - loss: 0.0084 - accuracy: 0.9975
1688/1688 [==============================] - 15s 6ms/step - loss: 0.0084 - accuracy: 0.9975 - val_loss: 0.0487 - val_accuracy: 0.9888
Epoch 2/5

   1/1688 [..............................] - ETA: 8s - loss: 1.4566e-04 - accuracy: 1.0000
  12/1688 [..............................] - ETA: 8s - loss: 0.0025 - accuracy: 1.0000    
  23/1688 [..............................] - ETA: 8s - loss: 0.0043 - accuracy: 0.9986
  34/1688 [..............................] - ETA: 8s - loss: 0.0066 - accuracy: 0.9982
  45/1688 [..............................] - ETA: 8s - loss: 0.0058 - accuracy: 0.9986
  55/1688 [..............................] - ETA: 8s - loss: 0.0054 - accuracy: 0.9989
  66/1688 [>.............................] - ETA: 8s - loss: 0.0055 - accuracy: 0.9986
  77/1688 [>.............................] - ETA: 7s - loss: 0.0050 - accuracy: 0.9988
  87/1688 [>.............................] - ETA: 7s - loss: 0.0049 - accuracy: 0.9986
  98/1688 [>.............................] - ETA: 7s - loss: 0.0047 - accuracy: 0.9987
 109/1688 [>.............................] - ETA: 7s - loss: 0.0048 - accuracy: 0.9989
 120/1688 [=>............................] - ETA: 7s - loss: 0.0045 - accuracy: 0.9990
 130/1688 [=>............................] - ETA: 7s - loss: 0.0046 - accuracy: 0.9986
 140/1688 [=>............................] - ETA: 7s - loss: 0.0046 - accuracy: 0.9987
 151/1688 [=>............................] - ETA: 7s - loss: 0.0047 - accuracy: 0.9986
 162/1688 [=>............................] - ETA: 7s - loss: 0.0047 - accuracy: 0.9986
 173/1688 [==>...........................] - ETA: 7s - loss: 0.0048 - accuracy: 0.9986
 183/1688 [==>...........................] - ETA: 7s - loss: 0.0047 - accuracy: 0.9986
 194/1688 [==>...........................] - ETA: 7s - loss: 0.0051 - accuracy: 0.9986
 205/1688 [==>...........................] - ETA: 7s - loss: 0.0051 - accuracy: 0.9986
 216/1688 [==>...........................] - ETA: 7s - loss: 0.0052 - accuracy: 0.9987
 226/1688 [===>..........................] - ETA: 7s - loss: 0.0052 - accuracy: 0.9988
 237/1688 [===>..........................] - ETA: 7s - loss: 0.0052 - accuracy: 0.9988
 248/1688 [===>..........................] - ETA: 7s - loss: 0.0052 - accuracy: 0.9989
 259/1688 [===>..........................] - ETA: 7s - loss: 0.0051 - accuracy: 0.9989
 270/1688 [===>..........................] - ETA: 7s - loss: 0.0051 - accuracy: 0.9990
 281/1688 [===>..........................] - ETA: 6s - loss: 0.0051 - accuracy: 0.9990
 292/1688 [====>.........................] - ETA: 6s - loss: 0.0053 - accuracy: 0.9988
 302/1688 [====>.........................] - ETA: 6s - loss: 0.0053 - accuracy: 0.9989
 313/1688 [====>.........................] - ETA: 6s - loss: 0.0052 - accuracy: 0.9989
 324/1688 [====>.........................] - ETA: 6s - loss: 0.0051 - accuracy: 0.9989
 335/1688 [====>.........................] - ETA: 6s - loss: 0.0051 - accuracy: 0.9990
 346/1688 [=====>........................] - ETA: 6s - loss: 0.0052 - accuracy: 0.9988
 357/1688 [=====>........................] - ETA: 6s - loss: 0.0052 - accuracy: 0.9989
 368/1688 [=====>........................] - ETA: 6s - loss: 0.0051 - accuracy: 0.9989
 379/1688 [=====>........................] - ETA: 6s - loss: 0.0051 - accuracy: 0.9989
 390/1688 [=====>........................] - ETA: 6s - loss: 0.0051 - accuracy: 0.9990
 400/1688 [======>.......................] - ETA: 6s - loss: 0.0052 - accuracy: 0.9989
 411/1688 [======>.......................] - ETA: 6s - loss: 0.0053 - accuracy: 0.9989
 422/1688 [======>.......................] - ETA: 6s - loss: 0.0053 - accuracy: 0.9989
 433/1688 [======>.......................] - ETA: 6s - loss: 0.0056 - accuracy: 0.9988
 444/1688 [======>.......................] - ETA: 6s - loss: 0.0056 - accuracy: 0.9987
 455/1688 [=======>......................] - ETA: 6s - loss: 0.0055 - accuracy: 0.9988
 465/1688 [=======>......................] - ETA: 6s - loss: 0.0059 - accuracy: 0.9987
 476/1688 [=======>......................] - ETA: 6s - loss: 0.0058 - accuracy: 0.9988
 487/1688 [=======>......................] - ETA: 5s - loss: 0.0058 - accuracy: 0.9988
 498/1688 [=======>......................] - ETA: 5s - loss: 0.0057 - accuracy: 0.9988
 508/1688 [========>.....................] - ETA: 5s - loss: 0.0056 - accuracy: 0.9988
 519/1688 [========>.....................] - ETA: 5s - loss: 0.0057 - accuracy: 0.9989
 530/1688 [========>.....................] - ETA: 5s - loss: 0.0056 - accuracy: 0.9989
 540/1688 [========>.....................] - ETA: 5s - loss: 0.0057 - accuracy: 0.9988
 551/1688 [========>.....................] - ETA: 5s - loss: 0.0056 - accuracy: 0.9989
 562/1688 [========>.....................] - ETA: 5s - loss: 0.0055 - accuracy: 0.9989
 573/1688 [=========>....................] - ETA: 5s - loss: 0.0055 - accuracy: 0.9989
 584/1688 [=========>....................] - ETA: 5s - loss: 0.0055 - accuracy: 0.9989
 594/1688 [=========>....................] - ETA: 5s - loss: 0.0054 - accuracy: 0.9989
 605/1688 [=========>....................] - ETA: 5s - loss: 0.0054 - accuracy: 0.9990
 616/1688 [=========>....................] - ETA: 5s - loss: 0.0055 - accuracy: 0.9989
 627/1688 [==========>...................] - ETA: 5s - loss: 0.0055 - accuracy: 0.9989
 637/1688 [==========>...................] - ETA: 5s - loss: 0.0055 - accuracy: 0.9989
 648/1688 [==========>...................] - ETA: 5s - loss: 0.0055 - accuracy: 0.9989
 659/1688 [==========>...................] - ETA: 5s - loss: 0.0055 - accuracy: 0.9989
 669/1688 [==========>...................] - ETA: 5s - loss: 0.0055 - accuracy: 0.9989
 680/1688 [===========>..................] - ETA: 5s - loss: 0.0055 - accuracy: 0.9989
 690/1688 [===========>..................] - ETA: 4s - loss: 0.0055 - accuracy: 0.9989
 701/1688 [===========>..................] - ETA: 4s - loss: 0.0055 - accuracy: 0.9989
 712/1688 [===========>..................] - ETA: 4s - loss: 0.0055 - accuracy: 0.9989
 723/1688 [===========>..................] - ETA: 4s - loss: 0.0055 - accuracy: 0.9989
 734/1688 [============>.................] - ETA: 4s - loss: 0.0055 - accuracy: 0.9989
 745/1688 [============>.................] - ETA: 4s - loss: 0.0055 - accuracy: 0.9989
 756/1688 [============>.................] - ETA: 4s - loss: 0.0055 - accuracy: 0.9989
 766/1688 [============>.................] - ETA: 4s - loss: 0.0055 - accuracy: 0.9989
 777/1688 [============>.................] - ETA: 4s - loss: 0.0055 - accuracy: 0.9989
 788/1688 [=============>................] - ETA: 4s - loss: 0.0055 - accuracy: 0.9989
 799/1688 [=============>................] - ETA: 4s - loss: 0.0055 - accuracy: 0.9989
 810/1688 [=============>................] - ETA: 4s - loss: 0.0054 - accuracy: 0.9990
 821/1688 [=============>................] - ETA: 4s - loss: 0.0054 - accuracy: 0.9990
 832/1688 [=============>................] - ETA: 4s - loss: 0.0054 - accuracy: 0.9989
 843/1688 [=============>................] - ETA: 4s - loss: 0.0054 - accuracy: 0.9990
 854/1688 [==============>...............] - ETA: 4s - loss: 0.0053 - accuracy: 0.9990
 865/1688 [==============>...............] - ETA: 4s - loss: 0.0053 - accuracy: 0.9990
 876/1688 [==============>...............] - ETA: 4s - loss: 0.0053 - accuracy: 0.9990
 887/1688 [==============>...............] - ETA: 3s - loss: 0.0053 - accuracy: 0.9990
 897/1688 [==============>...............] - ETA: 3s - loss: 0.0053 - accuracy: 0.9990
 908/1688 [===============>..............] - ETA: 3s - loss: 0.0053 - accuracy: 0.9990
 919/1688 [===============>..............] - ETA: 3s - loss: 0.0053 - accuracy: 0.9989
 930/1688 [===============>..............] - ETA: 3s - loss: 0.0054 - accuracy: 0.9989
 940/1688 [===============>..............] - ETA: 3s - loss: 0.0053 - accuracy: 0.9989
 951/1688 [===============>..............] - ETA: 3s - loss: 0.0054 - accuracy: 0.9989
 962/1688 [================>.............] - ETA: 3s - loss: 0.0053 - accuracy: 0.9990
 973/1688 [================>.............] - ETA: 3s - loss: 0.0054 - accuracy: 0.9989
 984/1688 [================>.............] - ETA: 3s - loss: 0.0053 - accuracy: 0.9989
 995/1688 [================>.............] - ETA: 3s - loss: 0.0054 - accuracy: 0.9989
1006/1688 [================>.............] - ETA: 3s - loss: 0.0055 - accuracy: 0.9989
1017/1688 [=================>............] - ETA: 3s - loss: 0.0055 - accuracy: 0.9989
1028/1688 [=================>............] - ETA: 3s - loss: 0.0054 - accuracy: 0.9989
1039/1688 [=================>............] - ETA: 3s - loss: 0.0055 - accuracy: 0.9989
1050/1688 [=================>............] - ETA: 3s - loss: 0.0055 - accuracy: 0.9988
1061/1688 [=================>............] - ETA: 3s - loss: 0.0057 - accuracy: 0.9988
1072/1688 [==================>...........] - ETA: 3s - loss: 0.0057 - accuracy: 0.9988
1083/1688 [==================>...........] - ETA: 3s - loss: 0.0057 - accuracy: 0.9988
1094/1688 [==================>...........] - ETA: 2s - loss: 0.0057 - accuracy: 0.9988
1105/1688 [==================>...........] - ETA: 2s - loss: 0.0057 - accuracy: 0.9988
1116/1688 [==================>...........] - ETA: 2s - loss: 0.0057 - accuracy: 0.9988
1127/1688 [===================>..........] - ETA: 2s - loss: 0.0057 - accuracy: 0.9988
1138/1688 [===================>..........] - ETA: 2s - loss: 0.0057 - accuracy: 0.9988
1149/1688 [===================>..........] - ETA: 2s - loss: 0.0057 - accuracy: 0.9987
1159/1688 [===================>..........] - ETA: 2s - loss: 0.0057 - accuracy: 0.9988
1170/1688 [===================>..........] - ETA: 2s - loss: 0.0056 - accuracy: 0.9988
1181/1688 [===================>..........] - ETA: 2s - loss: 0.0056 - accuracy: 0.9988
1192/1688 [====================>.........] - ETA: 2s - loss: 0.0056 - accuracy: 0.9988
1202/1688 [====================>.........] - ETA: 2s - loss: 0.0056 - accuracy: 0.9988
1213/1688 [====================>.........] - ETA: 2s - loss: 0.0056 - accuracy: 0.9988
1224/1688 [====================>.........] - ETA: 2s - loss: 0.0056 - accuracy: 0.9988
1235/1688 [====================>.........] - ETA: 2s - loss: 0.0056 - accuracy: 0.9987
1246/1688 [=====================>........] - ETA: 2s - loss: 0.0057 - accuracy: 0.9987
1257/1688 [=====================>........] - ETA: 2s - loss: 0.0057 - accuracy: 0.9987
1268/1688 [=====================>........] - ETA: 2s - loss: 0.0057 - accuracy: 0.9986
1278/1688 [=====================>........] - ETA: 2s - loss: 0.0057 - accuracy: 0.9987
1289/1688 [=====================>........] - ETA: 1s - loss: 0.0057 - accuracy: 0.9986
1299/1688 [======================>.......] - ETA: 1s - loss: 0.0057 - accuracy: 0.9987
1310/1688 [======================>.......] - ETA: 1s - loss: 0.0056 - accuracy: 0.9987
1321/1688 [======================>.......] - ETA: 1s - loss: 0.0057 - accuracy: 0.9986
1332/1688 [======================>.......] - ETA: 1s - loss: 0.0057 - accuracy: 0.9986
1343/1688 [======================>.......] - ETA: 1s - loss: 0.0057 - accuracy: 0.9986
1354/1688 [=======================>......] - ETA: 1s - loss: 0.0057 - accuracy: 0.9986
1365/1688 [=======================>......] - ETA: 1s - loss: 0.0057 - accuracy: 0.9986
1375/1688 [=======================>......] - ETA: 1s - loss: 0.0057 - accuracy: 0.9986
1386/1688 [=======================>......] - ETA: 1s - loss: 0.0057 - accuracy: 0.9986
1397/1688 [=======================>......] - ETA: 1s - loss: 0.0056 - accuracy: 0.9986
1408/1688 [========================>.....] - ETA: 1s - loss: 0.0057 - accuracy: 0.9986
1419/1688 [========================>.....] - ETA: 1s - loss: 0.0056 - accuracy: 0.9986
1429/1688 [========================>.....] - ETA: 1s - loss: 0.0057 - accuracy: 0.9986
1439/1688 [========================>.....] - ETA: 1s - loss: 0.0057 - accuracy: 0.9986
1449/1688 [========================>.....] - ETA: 1s - loss: 0.0057 - accuracy: 0.9986
1460/1688 [========================>.....] - ETA: 1s - loss: 0.0057 - accuracy: 0.9986
1471/1688 [=========================>....] - ETA: 1s - loss: 0.0057 - accuracy: 0.9986
1481/1688 [=========================>....] - ETA: 1s - loss: 0.0057 - accuracy: 0.9986
1492/1688 [=========================>....] - ETA: 0s - loss: 0.0058 - accuracy: 0.9985
1503/1688 [=========================>....] - ETA: 0s - loss: 0.0059 - accuracy: 0.9985
1514/1688 [=========================>....] - ETA: 0s - loss: 0.0059 - accuracy: 0.9985
1525/1688 [==========================>...] - ETA: 0s - loss: 0.0058 - accuracy: 0.9985
1536/1688 [==========================>...] - ETA: 0s - loss: 0.0058 - accuracy: 0.9985
1547/1688 [==========================>...] - ETA: 0s - loss: 0.0058 - accuracy: 0.9985
1558/1688 [==========================>...] - ETA: 0s - loss: 0.0058 - accuracy: 0.9985
1569/1688 [==========================>...] - ETA: 0s - loss: 0.0058 - accuracy: 0.9985
1580/1688 [===========================>..] - ETA: 0s - loss: 0.0059 - accuracy: 0.9985
1590/1688 [===========================>..] - ETA: 0s - loss: 0.0059 - accuracy: 0.9985
1601/1688 [===========================>..] - ETA: 0s - loss: 0.0059 - accuracy: 0.9985
1612/1688 [===========================>..] - ETA: 0s - loss: 0.0059 - accuracy: 0.9985
1623/1688 [===========================>..] - ETA: 0s - loss: 0.0059 - accuracy: 0.9985
1634/1688 [============================>.] - ETA: 0s - loss: 0.0058 - accuracy: 0.9985
1645/1688 [============================>.] - ETA: 0s - loss: 0.0058 - accuracy: 0.9985
1655/1688 [============================>.] - ETA: 0s - loss: 0.0058 - accuracy: 0.9985
1666/1688 [============================>.] - ETA: 0s - loss: 0.0058 - accuracy: 0.9986
1677/1688 [============================>.] - ETA: 0s - loss: 0.0058 - accuracy: 0.9986
1688/1688 [==============================] - ETA: 0s - loss: 0.0058 - accuracy: 0.9986
1688/1688 [==============================] - 9s 5ms/step - loss: 0.0058 - accuracy: 0.9986 - val_loss: 0.0504 - val_accuracy: 0.9877
Epoch 3/5

   1/1688 [..............................] - ETA: 8s - loss: 0.0019 - accuracy: 1.0000
  12/1688 [..............................] - ETA: 8s - loss: 0.0034 - accuracy: 1.0000
  23/1688 [..............................] - ETA: 8s - loss: 0.0036 - accuracy: 1.0000
  34/1688 [..............................] - ETA: 8s - loss: 0.0032 - accuracy: 1.0000
  45/1688 [..............................] - ETA: 8s - loss: 0.0043 - accuracy: 0.9986
  55/1688 [..............................] - ETA: 8s - loss: 0.0037 - accuracy: 0.9989
  66/1688 [>.............................] - ETA: 8s - loss: 0.0035 - accuracy: 0.9991
  77/1688 [>.............................] - ETA: 7s - loss: 0.0039 - accuracy: 0.9988
  88/1688 [>.............................] - ETA: 7s - loss: 0.0039 - accuracy: 0.9989
  98/1688 [>.............................] - ETA: 7s - loss: 0.0041 - accuracy: 0.9990
 108/1688 [>.............................] - ETA: 7s - loss: 0.0039 - accuracy: 0.9991
 119/1688 [=>............................] - ETA: 7s - loss: 0.0045 - accuracy: 0.9989
 129/1688 [=>............................] - ETA: 7s - loss: 0.0045 - accuracy: 0.9990
 139/1688 [=>............................] - ETA: 7s - loss: 0.0048 - accuracy: 0.9991
 150/1688 [=>............................] - ETA: 7s - loss: 0.0049 - accuracy: 0.9990
 161/1688 [=>............................] - ETA: 7s - loss: 0.0051 - accuracy: 0.9988
 172/1688 [==>...........................] - ETA: 7s - loss: 0.0049 - accuracy: 0.9989
 183/1688 [==>...........................] - ETA: 7s - loss: 0.0048 - accuracy: 0.9988
 194/1688 [==>...........................] - ETA: 7s - loss: 0.0047 - accuracy: 0.9989
 205/1688 [==>...........................] - ETA: 7s - loss: 0.0047 - accuracy: 0.9988
 216/1688 [==>...........................] - ETA: 7s - loss: 0.0046 - accuracy: 0.9988
 227/1688 [===>..........................] - ETA: 7s - loss: 0.0049 - accuracy: 0.9986
 238/1688 [===>..........................] - ETA: 7s - loss: 0.0056 - accuracy: 0.9984
 249/1688 [===>..........................] - ETA: 7s - loss: 0.0055 - accuracy: 0.9985
 259/1688 [===>..........................] - ETA: 7s - loss: 0.0056 - accuracy: 0.9984
 270/1688 [===>..........................] - ETA: 7s - loss: 0.0054 - accuracy: 0.9985
 281/1688 [===>..........................] - ETA: 6s - loss: 0.0054 - accuracy: 0.9986
 292/1688 [====>.........................] - ETA: 6s - loss: 0.0053 - accuracy: 0.9986
 303/1688 [====>.........................] - ETA: 6s - loss: 0.0055 - accuracy: 0.9985
 313/1688 [====>.........................] - ETA: 6s - loss: 0.0055 - accuracy: 0.9984
 324/1688 [====>.........................] - ETA: 6s - loss: 0.0056 - accuracy: 0.9984
 335/1688 [====>.........................] - ETA: 6s - loss: 0.0058 - accuracy: 0.9983
 346/1688 [=====>........................] - ETA: 6s - loss: 0.0058 - accuracy: 0.9983
 357/1688 [=====>........................] - ETA: 6s - loss: 0.0057 - accuracy: 0.9983
 367/1688 [=====>........................] - ETA: 6s - loss: 0.0059 - accuracy: 0.9983
 378/1688 [=====>........................] - ETA: 6s - loss: 0.0059 - accuracy: 0.9983
 389/1688 [=====>........................] - ETA: 6s - loss: 0.0058 - accuracy: 0.9984
 400/1688 [======>.......................] - ETA: 6s - loss: 0.0058 - accuracy: 0.9984
 411/1688 [======>.......................] - ETA: 6s - loss: 0.0057 - accuracy: 0.9985
 422/1688 [======>.......................] - ETA: 6s - loss: 0.0056 - accuracy: 0.9985
 432/1688 [======>.......................] - ETA: 6s - loss: 0.0055 - accuracy: 0.9986
 442/1688 [======>.......................] - ETA: 6s - loss: 0.0055 - accuracy: 0.9986
 453/1688 [=======>......................] - ETA: 6s - loss: 0.0055 - accuracy: 0.9986
 464/1688 [=======>......................] - ETA: 6s - loss: 0.0054 - accuracy: 0.9987
 475/1688 [=======>......................] - ETA: 6s - loss: 0.0053 - accuracy: 0.9987
 486/1688 [=======>......................] - ETA: 5s - loss: 0.0052 - accuracy: 0.9987
 497/1688 [=======>......................] - ETA: 5s - loss: 0.0053 - accuracy: 0.9987
 508/1688 [========>.....................] - ETA: 5s - loss: 0.0052 - accuracy: 0.9987
 519/1688 [========>.....................] - ETA: 5s - loss: 0.0051 - accuracy: 0.9987
 530/1688 [========>.....................] - ETA: 5s - loss: 0.0052 - accuracy: 0.9987
 541/1688 [========>.....................] - ETA: 5s - loss: 0.0051 - accuracy: 0.9987
 552/1688 [========>.....................] - ETA: 5s - loss: 0.0052 - accuracy: 0.9987
 563/1688 [=========>....................] - ETA: 5s - loss: 0.0052 - accuracy: 0.9987
 573/1688 [=========>....................] - ETA: 5s - loss: 0.0052 - accuracy: 0.9987
 584/1688 [=========>....................] - ETA: 5s - loss: 0.0051 - accuracy: 0.9987
 595/1688 [=========>....................] - ETA: 5s - loss: 0.0053 - accuracy: 0.9987
 606/1688 [=========>....................] - ETA: 5s - loss: 0.0053 - accuracy: 0.9987
 617/1688 [=========>....................] - ETA: 5s - loss: 0.0052 - accuracy: 0.9987
 628/1688 [==========>...................] - ETA: 5s - loss: 0.0052 - accuracy: 0.9987
 638/1688 [==========>...................] - ETA: 5s - loss: 0.0052 - accuracy: 0.9987
 649/1688 [==========>...................] - ETA: 5s - loss: 0.0052 - accuracy: 0.9987
 659/1688 [==========>...................] - ETA: 5s - loss: 0.0051 - accuracy: 0.9987
 670/1688 [==========>...................] - ETA: 5s - loss: 0.0051 - accuracy: 0.9987
 681/1688 [===========>..................] - ETA: 4s - loss: 0.0051 - accuracy: 0.9988
 692/1688 [===========>..................] - ETA: 4s - loss: 0.0051 - accuracy: 0.9988
 703/1688 [===========>..................] - ETA: 4s - loss: 0.0050 - accuracy: 0.9988
 714/1688 [===========>..................] - ETA: 4s - loss: 0.0050 - accuracy: 0.9988
 725/1688 [===========>..................] - ETA: 4s - loss: 0.0051 - accuracy: 0.9987
 736/1688 [============>.................] - ETA: 4s - loss: 0.0051 - accuracy: 0.9987
 747/1688 [============>.................] - ETA: 4s - loss: 0.0052 - accuracy: 0.9987
 758/1688 [============>.................] - ETA: 4s - loss: 0.0051 - accuracy: 0.9987
 769/1688 [============>.................] - ETA: 4s - loss: 0.0052 - accuracy: 0.9987
 779/1688 [============>.................] - ETA: 4s - loss: 0.0052 - accuracy: 0.9987
 789/1688 [=============>................] - ETA: 4s - loss: 0.0051 - accuracy: 0.9987
 800/1688 [=============>................] - ETA: 4s - loss: 0.0051 - accuracy: 0.9987
 810/1688 [=============>................] - ETA: 4s - loss: 0.0051 - accuracy: 0.9988
 821/1688 [=============>................] - ETA: 4s - loss: 0.0051 - accuracy: 0.9988
 832/1688 [=============>................] - ETA: 4s - loss: 0.0050 - accuracy: 0.9988
 843/1688 [=============>................] - ETA: 4s - loss: 0.0050 - accuracy: 0.9988
 854/1688 [==============>...............] - ETA: 4s - loss: 0.0050 - accuracy: 0.9988
 865/1688 [==============>...............] - ETA: 4s - loss: 0.0050 - accuracy: 0.9988
 875/1688 [==============>...............] - ETA: 4s - loss: 0.0050 - accuracy: 0.9988
 886/1688 [==============>...............] - ETA: 3s - loss: 0.0050 - accuracy: 0.9988
 897/1688 [==============>...............] - ETA: 3s - loss: 0.0050 - accuracy: 0.9987
 907/1688 [===============>..............] - ETA: 3s - loss: 0.0050 - accuracy: 0.9988
 918/1688 [===============>..............] - ETA: 3s - loss: 0.0049 - accuracy: 0.9988
 929/1688 [===============>..............] - ETA: 3s - loss: 0.0049 - accuracy: 0.9988
 940/1688 [===============>..............] - ETA: 3s - loss: 0.0049 - accuracy: 0.9988
 950/1688 [===============>..............] - ETA: 3s - loss: 0.0048 - accuracy: 0.9988
 960/1688 [================>.............] - ETA: 3s - loss: 0.0049 - accuracy: 0.9988
 970/1688 [================>.............] - ETA: 3s - loss: 0.0048 - accuracy: 0.9988
 980/1688 [================>.............] - ETA: 3s - loss: 0.0048 - accuracy: 0.9988
 990/1688 [================>.............] - ETA: 3s - loss: 0.0048 - accuracy: 0.9988
1001/1688 [================>.............] - ETA: 3s - loss: 0.0048 - accuracy: 0.9988
1012/1688 [================>.............] - ETA: 3s - loss: 0.0048 - accuracy: 0.9988
1023/1688 [=================>............] - ETA: 3s - loss: 0.0048 - accuracy: 0.9988
1034/1688 [=================>............] - ETA: 3s - loss: 0.0048 - accuracy: 0.9989
1045/1688 [=================>............] - ETA: 3s - loss: 0.0048 - accuracy: 0.9988
1055/1688 [=================>............] - ETA: 3s - loss: 0.0048 - accuracy: 0.9988
1065/1688 [=================>............] - ETA: 3s - loss: 0.0048 - accuracy: 0.9989
1075/1688 [==================>...........] - ETA: 3s - loss: 0.0048 - accuracy: 0.9988
1086/1688 [==================>...........] - ETA: 2s - loss: 0.0048 - accuracy: 0.9988
1096/1688 [==================>...........] - ETA: 2s - loss: 0.0048 - accuracy: 0.9989
1106/1688 [==================>...........] - ETA: 2s - loss: 0.0048 - accuracy: 0.9989
1116/1688 [==================>...........] - ETA: 2s - loss: 0.0047 - accuracy: 0.9989
1127/1688 [===================>..........] - ETA: 2s - loss: 0.0048 - accuracy: 0.9989
1138/1688 [===================>..........] - ETA: 2s - loss: 0.0048 - accuracy: 0.9989
1148/1688 [===================>..........] - ETA: 2s - loss: 0.0048 - accuracy: 0.9989
1159/1688 [===================>..........] - ETA: 2s - loss: 0.0047 - accuracy: 0.9989
1169/1688 [===================>..........] - ETA: 2s - loss: 0.0048 - accuracy: 0.9989
1180/1688 [===================>..........] - ETA: 2s - loss: 0.0048 - accuracy: 0.9989
1191/1688 [====================>.........] - ETA: 2s - loss: 0.0048 - accuracy: 0.9989
1202/1688 [====================>.........] - ETA: 2s - loss: 0.0048 - accuracy: 0.9989
1212/1688 [====================>.........] - ETA: 2s - loss: 0.0048 - accuracy: 0.9989
1223/1688 [====================>.........] - ETA: 2s - loss: 0.0048 - accuracy: 0.9989
1234/1688 [====================>.........] - ETA: 2s - loss: 0.0048 - accuracy: 0.9989
1244/1688 [=====================>........] - ETA: 2s - loss: 0.0047 - accuracy: 0.9989
1255/1688 [=====================>........] - ETA: 2s - loss: 0.0047 - accuracy: 0.9989
1265/1688 [=====================>........] - ETA: 2s - loss: 0.0047 - accuracy: 0.9989
1276/1688 [=====================>........] - ETA: 2s - loss: 0.0047 - accuracy: 0.9989
1287/1688 [=====================>........] - ETA: 1s - loss: 0.0047 - accuracy: 0.9989
1298/1688 [======================>.......] - ETA: 1s - loss: 0.0047 - accuracy: 0.9989
1308/1688 [======================>.......] - ETA: 1s - loss: 0.0047 - accuracy: 0.9989
1318/1688 [======================>.......] - ETA: 1s - loss: 0.0047 - accuracy: 0.9989
1328/1688 [======================>.......] - ETA: 1s - loss: 0.0047 - accuracy: 0.9989
1339/1688 [======================>.......] - ETA: 1s - loss: 0.0047 - accuracy: 0.9989
1349/1688 [======================>.......] - ETA: 1s - loss: 0.0047 - accuracy: 0.9989
1360/1688 [=======================>......] - ETA: 1s - loss: 0.0047 - accuracy: 0.9989
1371/1688 [=======================>......] - ETA: 1s - loss: 0.0047 - accuracy: 0.9990
1381/1688 [=======================>......] - ETA: 1s - loss: 0.0047 - accuracy: 0.9990
1392/1688 [=======================>......] - ETA: 1s - loss: 0.0047 - accuracy: 0.9989
1403/1688 [=======================>......] - ETA: 1s - loss: 0.0047 - accuracy: 0.9990
1414/1688 [========================>.....] - ETA: 1s - loss: 0.0047 - accuracy: 0.9990
1424/1688 [========================>.....] - ETA: 1s - loss: 0.0047 - accuracy: 0.9990
1434/1688 [========================>.....] - ETA: 1s - loss: 0.0046 - accuracy: 0.9990
1445/1688 [========================>.....] - ETA: 1s - loss: 0.0046 - accuracy: 0.9990
1456/1688 [========================>.....] - ETA: 1s - loss: 0.0046 - accuracy: 0.9990
1466/1688 [=========================>....] - ETA: 1s - loss: 0.0046 - accuracy: 0.9990
1477/1688 [=========================>....] - ETA: 1s - loss: 0.0046 - accuracy: 0.9990
1488/1688 [=========================>....] - ETA: 0s - loss: 0.0047 - accuracy: 0.9990
1499/1688 [=========================>....] - ETA: 0s - loss: 0.0047 - accuracy: 0.9990
1509/1688 [=========================>....] - ETA: 0s - loss: 0.0047 - accuracy: 0.9990
1519/1688 [=========================>....] - ETA: 0s - loss: 0.0047 - accuracy: 0.9990
1529/1688 [==========================>...] - ETA: 0s - loss: 0.0047 - accuracy: 0.9990
1540/1688 [==========================>...] - ETA: 0s - loss: 0.0046 - accuracy: 0.9990
1550/1688 [==========================>...] - ETA: 0s - loss: 0.0046 - accuracy: 0.9990
1561/1688 [==========================>...] - ETA: 0s - loss: 0.0046 - accuracy: 0.9990
1572/1688 [==========================>...] - ETA: 0s - loss: 0.0046 - accuracy: 0.9990
1583/1688 [===========================>..] - ETA: 0s - loss: 0.0046 - accuracy: 0.9990
1594/1688 [===========================>..] - ETA: 0s - loss: 0.0046 - accuracy: 0.9990
1604/1688 [===========================>..] - ETA: 0s - loss: 0.0046 - accuracy: 0.9990
1615/1688 [===========================>..] - ETA: 0s - loss: 0.0046 - accuracy: 0.9990
1626/1688 [===========================>..] - ETA: 0s - loss: 0.0046 - accuracy: 0.9990
1636/1688 [============================>.] - ETA: 0s - loss: 0.0045 - accuracy: 0.9990
1647/1688 [============================>.] - ETA: 0s - loss: 0.0045 - accuracy: 0.9990
1658/1688 [============================>.] - ETA: 0s - loss: 0.0045 - accuracy: 0.9990
1668/1688 [============================>.] - ETA: 0s - loss: 0.0046 - accuracy: 0.9990
1679/1688 [============================>.] - ETA: 0s - loss: 0.0045 - accuracy: 0.9990
1688/1688 [==============================] - 9s 5ms/step - loss: 0.0045 - accuracy: 0.9990 - val_loss: 0.0490 - val_accuracy: 0.9890
Epoch 4/5

   1/1688 [..............................] - ETA: 8s - loss: 0.0058 - accuracy: 1.0000
  12/1688 [..............................] - ETA: 8s - loss: 0.0041 - accuracy: 1.0000
  22/1688 [..............................] - ETA: 8s - loss: 0.0032 - accuracy: 1.0000
  33/1688 [..............................] - ETA: 8s - loss: 0.0024 - accuracy: 1.0000
  44/1688 [..............................] - ETA: 8s - loss: 0.0025 - accuracy: 1.0000
  55/1688 [..............................] - ETA: 8s - loss: 0.0025 - accuracy: 1.0000
  66/1688 [>.............................] - ETA: 8s - loss: 0.0022 - accuracy: 1.0000
  77/1688 [>.............................] - ETA: 7s - loss: 0.0025 - accuracy: 0.9996
  88/1688 [>.............................] - ETA: 7s - loss: 0.0025 - accuracy: 0.9996
  98/1688 [>.............................] - ETA: 7s - loss: 0.0029 - accuracy: 0.9994
 108/1688 [>.............................] - ETA: 7s - loss: 0.0029 - accuracy: 0.9994
 119/1688 [=>............................] - ETA: 7s - loss: 0.0029 - accuracy: 0.9995
 129/1688 [=>............................] - ETA: 7s - loss: 0.0031 - accuracy: 0.9995
 140/1688 [=>............................] - ETA: 7s - loss: 0.0031 - accuracy: 0.9996
 150/1688 [=>............................] - ETA: 7s - loss: 0.0032 - accuracy: 0.9996
 161/1688 [=>............................] - ETA: 7s - loss: 0.0031 - accuracy: 0.9996
 172/1688 [==>...........................] - ETA: 7s - loss: 0.0032 - accuracy: 0.9996
 183/1688 [==>...........................] - ETA: 7s - loss: 0.0032 - accuracy: 0.9997
 194/1688 [==>...........................] - ETA: 7s - loss: 0.0033 - accuracy: 0.9997
 205/1688 [==>...........................] - ETA: 7s - loss: 0.0032 - accuracy: 0.9997
 215/1688 [==>...........................] - ETA: 7s - loss: 0.0035 - accuracy: 0.9996
 225/1688 [==>...........................] - ETA: 7s - loss: 0.0034 - accuracy: 0.9996
 235/1688 [===>..........................] - ETA: 7s - loss: 0.0035 - accuracy: 0.9995
 246/1688 [===>..........................] - ETA: 7s - loss: 0.0036 - accuracy: 0.9995
 257/1688 [===>..........................] - ETA: 7s - loss: 0.0035 - accuracy: 0.9995
 268/1688 [===>..........................] - ETA: 7s - loss: 0.0036 - accuracy: 0.9994
 279/1688 [===>..........................] - ETA: 7s - loss: 0.0035 - accuracy: 0.9994
 290/1688 [====>.........................] - ETA: 6s - loss: 0.0037 - accuracy: 0.9994
 300/1688 [====>.........................] - ETA: 6s - loss: 0.0036 - accuracy: 0.9994
 310/1688 [====>.........................] - ETA: 6s - loss: 0.0036 - accuracy: 0.9994
 320/1688 [====>.........................] - ETA: 6s - loss: 0.0036 - accuracy: 0.9994
 331/1688 [====>.........................] - ETA: 6s - loss: 0.0035 - accuracy: 0.9994
 342/1688 [=====>........................] - ETA: 6s - loss: 0.0035 - accuracy: 0.9995
 353/1688 [=====>........................] - ETA: 6s - loss: 0.0034 - accuracy: 0.9995
 364/1688 [=====>........................] - ETA: 6s - loss: 0.0036 - accuracy: 0.9994
 375/1688 [=====>........................] - ETA: 6s - loss: 0.0036 - accuracy: 0.9993
 386/1688 [=====>........................] - ETA: 6s - loss: 0.0036 - accuracy: 0.9994
 397/1688 [======>.......................] - ETA: 6s - loss: 0.0036 - accuracy: 0.9994
 407/1688 [======>.......................] - ETA: 6s - loss: 0.0037 - accuracy: 0.9994
 418/1688 [======>.......................] - ETA: 6s - loss: 0.0039 - accuracy: 0.9993
 429/1688 [======>.......................] - ETA: 6s - loss: 0.0038 - accuracy: 0.9993
 439/1688 [======>.......................] - ETA: 6s - loss: 0.0038 - accuracy: 0.9994
 450/1688 [======>.......................] - ETA: 6s - loss: 0.0039 - accuracy: 0.9992
 461/1688 [=======>......................] - ETA: 6s - loss: 0.0039 - accuracy: 0.9993
 471/1688 [=======>......................] - ETA: 6s - loss: 0.0039 - accuracy: 0.9993
 482/1688 [=======>......................] - ETA: 6s - loss: 0.0039 - accuracy: 0.9992
 493/1688 [=======>......................] - ETA: 5s - loss: 0.0039 - accuracy: 0.9992
 503/1688 [=======>......................] - ETA: 5s - loss: 0.0039 - accuracy: 0.9992
 513/1688 [========>.....................] - ETA: 5s - loss: 0.0038 - accuracy: 0.9992
 524/1688 [========>.....................] - ETA: 5s - loss: 0.0038 - accuracy: 0.9992
 535/1688 [========>.....................] - ETA: 5s - loss: 0.0040 - accuracy: 0.9991
 546/1688 [========>.....................] - ETA: 5s - loss: 0.0040 - accuracy: 0.9991
 557/1688 [========>.....................] - ETA: 5s - loss: 0.0039 - accuracy: 0.9991
 568/1688 [=========>....................] - ETA: 5s - loss: 0.0039 - accuracy: 0.9991
 579/1688 [=========>....................] - ETA: 5s - loss: 0.0039 - accuracy: 0.9991
 590/1688 [=========>....................] - ETA: 5s - loss: 0.0039 - accuracy: 0.9992
 601/1688 [=========>....................] - ETA: 5s - loss: 0.0039 - accuracy: 0.9992
 612/1688 [=========>....................] - ETA: 5s - loss: 0.0039 - accuracy: 0.9991
 623/1688 [==========>...................] - ETA: 5s - loss: 0.0039 - accuracy: 0.9991
 634/1688 [==========>...................] - ETA: 5s - loss: 0.0039 - accuracy: 0.9992
 645/1688 [==========>...................] - ETA: 5s - loss: 0.0039 - accuracy: 0.9992
 656/1688 [==========>...................] - ETA: 5s - loss: 0.0039 - accuracy: 0.9992
 667/1688 [==========>...................] - ETA: 5s - loss: 0.0038 - accuracy: 0.9992
 678/1688 [===========>..................] - ETA: 5s - loss: 0.0038 - accuracy: 0.9992
 689/1688 [===========>..................] - ETA: 4s - loss: 0.0038 - accuracy: 0.9992
 699/1688 [===========>..................] - ETA: 4s - loss: 0.0038 - accuracy: 0.9992
 710/1688 [===========>..................] - ETA: 4s - loss: 0.0038 - accuracy: 0.9992
 721/1688 [===========>..................] - ETA: 4s - loss: 0.0037 - accuracy: 0.9992
 732/1688 [============>.................] - ETA: 4s - loss: 0.0039 - accuracy: 0.9991
 742/1688 [============>.................] - ETA: 4s - loss: 0.0039 - accuracy: 0.9992
 753/1688 [============>.................] - ETA: 4s - loss: 0.0039 - accuracy: 0.9991
 764/1688 [============>.................] - ETA: 4s - loss: 0.0039 - accuracy: 0.9991
 775/1688 [============>.................] - ETA: 4s - loss: 0.0039 - accuracy: 0.9992
 785/1688 [============>.................] - ETA: 4s - loss: 0.0039 - accuracy: 0.9992
 796/1688 [=============>................] - ETA: 4s - loss: 0.0039 - accuracy: 0.9992
 807/1688 [=============>................] - ETA: 4s - loss: 0.0039 - accuracy: 0.9991
 818/1688 [=============>................] - ETA: 4s - loss: 0.0039 - accuracy: 0.9992
 829/1688 [=============>................] - ETA: 4s - loss: 0.0039 - accuracy: 0.9992
 839/1688 [=============>................] - ETA: 4s - loss: 0.0039 - accuracy: 0.9992
 850/1688 [==============>...............] - ETA: 4s - loss: 0.0038 - accuracy: 0.9992
 861/1688 [==============>...............] - ETA: 4s - loss: 0.0038 - accuracy: 0.9992
 872/1688 [==============>...............] - ETA: 4s - loss: 0.0038 - accuracy: 0.9992
 883/1688 [==============>...............] - ETA: 4s - loss: 0.0038 - accuracy: 0.9992
 894/1688 [==============>...............] - ETA: 3s - loss: 0.0038 - accuracy: 0.9992
 905/1688 [===============>..............] - ETA: 3s - loss: 0.0038 - accuracy: 0.9992
 915/1688 [===============>..............] - ETA: 3s - loss: 0.0038 - accuracy: 0.9992
 925/1688 [===============>..............] - ETA: 3s - loss: 0.0038 - accuracy: 0.9992
 936/1688 [===============>..............] - ETA: 3s - loss: 0.0038 - accuracy: 0.9992
 946/1688 [===============>..............] - ETA: 3s - loss: 0.0037 - accuracy: 0.9992
 957/1688 [================>.............] - ETA: 3s - loss: 0.0038 - accuracy: 0.9992
 968/1688 [================>.............] - ETA: 3s - loss: 0.0037 - accuracy: 0.9993
 979/1688 [================>.............] - ETA: 3s - loss: 0.0037 - accuracy: 0.9993
 989/1688 [================>.............] - ETA: 3s - loss: 0.0037 - accuracy: 0.9993
 999/1688 [================>.............] - ETA: 3s - loss: 0.0037 - accuracy: 0.9993
1010/1688 [================>.............] - ETA: 3s - loss: 0.0037 - accuracy: 0.9993
1021/1688 [=================>............] - ETA: 3s - loss: 0.0037 - accuracy: 0.9993
1032/1688 [=================>............] - ETA: 3s - loss: 0.0037 - accuracy: 0.9992
1043/1688 [=================>............] - ETA: 3s - loss: 0.0037 - accuracy: 0.9993
1054/1688 [=================>............] - ETA: 3s - loss: 0.0037 - accuracy: 0.9993
1065/1688 [=================>............] - ETA: 3s - loss: 0.0037 - accuracy: 0.9993
1076/1688 [==================>...........] - ETA: 3s - loss: 0.0037 - accuracy: 0.9993
1087/1688 [==================>...........] - ETA: 2s - loss: 0.0037 - accuracy: 0.9993
1097/1688 [==================>...........] - ETA: 2s - loss: 0.0038 - accuracy: 0.9993
1107/1688 [==================>...........] - ETA: 2s - loss: 0.0038 - accuracy: 0.9993
1117/1688 [==================>...........] - ETA: 2s - loss: 0.0039 - accuracy: 0.9992
1128/1688 [===================>..........] - ETA: 2s - loss: 0.0039 - accuracy: 0.9993
1139/1688 [===================>..........] - ETA: 2s - loss: 0.0038 - accuracy: 0.9993
1150/1688 [===================>..........] - ETA: 2s - loss: 0.0038 - accuracy: 0.9993
1161/1688 [===================>..........] - ETA: 2s - loss: 0.0039 - accuracy: 0.9992
1172/1688 [===================>..........] - ETA: 2s - loss: 0.0039 - accuracy: 0.9993
1183/1688 [====================>.........] - ETA: 2s - loss: 0.0039 - accuracy: 0.9992
1194/1688 [====================>.........] - ETA: 2s - loss: 0.0038 - accuracy: 0.9992
1205/1688 [====================>.........] - ETA: 2s - loss: 0.0038 - accuracy: 0.9992
1216/1688 [====================>.........] - ETA: 2s - loss: 0.0038 - accuracy: 0.9993
1227/1688 [====================>.........] - ETA: 2s - loss: 0.0038 - accuracy: 0.9993
1238/1688 [=====================>........] - ETA: 2s - loss: 0.0038 - accuracy: 0.9993
1249/1688 [=====================>........] - ETA: 2s - loss: 0.0039 - accuracy: 0.9992
1260/1688 [=====================>........] - ETA: 2s - loss: 0.0039 - accuracy: 0.9992
1271/1688 [=====================>........] - ETA: 2s - loss: 0.0039 - accuracy: 0.9992
1282/1688 [=====================>........] - ETA: 2s - loss: 0.0039 - accuracy: 0.9992
1292/1688 [=====================>........] - ETA: 1s - loss: 0.0039 - accuracy: 0.9992
1303/1688 [======================>.......] - ETA: 1s - loss: 0.0040 - accuracy: 0.9992
1314/1688 [======================>.......] - ETA: 1s - loss: 0.0040 - accuracy: 0.9992
1325/1688 [======================>.......] - ETA: 1s - loss: 0.0040 - accuracy: 0.9992
1336/1688 [======================>.......] - ETA: 1s - loss: 0.0040 - accuracy: 0.9992
1347/1688 [======================>.......] - ETA: 1s - loss: 0.0040 - accuracy: 0.9991
1357/1688 [=======================>......] - ETA: 1s - loss: 0.0040 - accuracy: 0.9991
1368/1688 [=======================>......] - ETA: 1s - loss: 0.0040 - accuracy: 0.9991
1378/1688 [=======================>......] - ETA: 1s - loss: 0.0040 - accuracy: 0.9991
1389/1688 [=======================>......] - ETA: 1s - loss: 0.0040 - accuracy: 0.9991
1400/1688 [=======================>......] - ETA: 1s - loss: 0.0040 - accuracy: 0.9991
1410/1688 [========================>.....] - ETA: 1s - loss: 0.0041 - accuracy: 0.9991
1421/1688 [========================>.....] - ETA: 1s - loss: 0.0040 - accuracy: 0.9991
1431/1688 [========================>.....] - ETA: 1s - loss: 0.0040 - accuracy: 0.9991
1442/1688 [========================>.....] - ETA: 1s - loss: 0.0040 - accuracy: 0.9991
1453/1688 [========================>.....] - ETA: 1s - loss: 0.0040 - accuracy: 0.9991
1463/1688 [=========================>....] - ETA: 1s - loss: 0.0040 - accuracy: 0.9991
1474/1688 [=========================>....] - ETA: 1s - loss: 0.0040 - accuracy: 0.9991
1484/1688 [=========================>....] - ETA: 1s - loss: 0.0040 - accuracy: 0.9991
1495/1688 [=========================>....] - ETA: 0s - loss: 0.0040 - accuracy: 0.9991
1506/1688 [=========================>....] - ETA: 0s - loss: 0.0040 - accuracy: 0.9991
1517/1688 [=========================>....] - ETA: 0s - loss: 0.0040 - accuracy: 0.9991
1527/1688 [==========================>...] - ETA: 0s - loss: 0.0040 - accuracy: 0.9991
1538/1688 [==========================>...] - ETA: 0s - loss: 0.0040 - accuracy: 0.9991
1548/1688 [==========================>...] - ETA: 0s - loss: 0.0040 - accuracy: 0.9991
1559/1688 [==========================>...] - ETA: 0s - loss: 0.0040 - accuracy: 0.9991
1570/1688 [==========================>...] - ETA: 0s - loss: 0.0040 - accuracy: 0.9991
1581/1688 [===========================>..] - ETA: 0s - loss: 0.0040 - accuracy: 0.9991
1592/1688 [===========================>..] - ETA: 0s - loss: 0.0040 - accuracy: 0.9991
1603/1688 [===========================>..] - ETA: 0s - loss: 0.0040 - accuracy: 0.9991
1614/1688 [===========================>..] - ETA: 0s - loss: 0.0040 - accuracy: 0.9991
1624/1688 [===========================>..] - ETA: 0s - loss: 0.0040 - accuracy: 0.9991
1634/1688 [============================>.] - ETA: 0s - loss: 0.0040 - accuracy: 0.9991
1645/1688 [============================>.] - ETA: 0s - loss: 0.0040 - accuracy: 0.9991
1656/1688 [============================>.] - ETA: 0s - loss: 0.0040 - accuracy: 0.9992
1667/1688 [============================>.] - ETA: 0s - loss: 0.0040 - accuracy: 0.9991
1678/1688 [============================>.] - ETA: 0s - loss: 0.0040 - accuracy: 0.9991
1688/1688 [==============================] - 9s 5ms/step - loss: 0.0040 - accuracy: 0.9991 - val_loss: 0.0484 - val_accuracy: 0.9888
Epoch 5/5

   1/1688 [..............................] - ETA: 8s - loss: 3.5689e-04 - accuracy: 1.0000
  12/1688 [..............................] - ETA: 8s - loss: 0.0101 - accuracy: 0.9974    
  23/1688 [..............................] - ETA: 8s - loss: 0.0066 - accuracy: 0.9986
  33/1688 [..............................] - ETA: 8s - loss: 0.0052 - accuracy: 0.9991
  44/1688 [..............................] - ETA: 8s - loss: 0.0052 - accuracy: 0.9986
  55/1688 [..............................] - ETA: 8s - loss: 0.0047 - accuracy: 0.9989
  66/1688 [>.............................] - ETA: 8s - loss: 0.0044 - accuracy: 0.9991
  77/1688 [>.............................] - ETA: 7s - loss: 0.0044 - accuracy: 0.9992
  88/1688 [>.............................] - ETA: 7s - loss: 0.0041 - accuracy: 0.9993
  99/1688 [>.............................] - ETA: 7s - loss: 0.0039 - accuracy: 0.9994
 109/1688 [>.............................] - ETA: 7s - loss: 0.0037 - accuracy: 0.9994
 119/1688 [=>............................] - ETA: 7s - loss: 0.0035 - accuracy: 0.9995
 130/1688 [=>............................] - ETA: 7s - loss: 0.0034 - accuracy: 0.9995
 140/1688 [=>............................] - ETA: 7s - loss: 0.0033 - accuracy: 0.9996
 151/1688 [=>............................] - ETA: 7s - loss: 0.0032 - accuracy: 0.9996
 162/1688 [=>............................] - ETA: 7s - loss: 0.0032 - accuracy: 0.9996
 173/1688 [==>...........................] - ETA: 7s - loss: 0.0033 - accuracy: 0.9996
 184/1688 [==>...........................] - ETA: 7s - loss: 0.0032 - accuracy: 0.9997
 194/1688 [==>...........................] - ETA: 7s - loss: 0.0031 - accuracy: 0.9997
 205/1688 [==>...........................] - ETA: 7s - loss: 0.0031 - accuracy: 0.9997
 216/1688 [==>...........................] - ETA: 7s - loss: 0.0031 - accuracy: 0.9997
 227/1688 [===>..........................] - ETA: 7s - loss: 0.0031 - accuracy: 0.9997
 238/1688 [===>..........................] - ETA: 7s - loss: 0.0030 - accuracy: 0.9997
 248/1688 [===>..........................] - ETA: 7s - loss: 0.0030 - accuracy: 0.9997
 258/1688 [===>..........................] - ETA: 7s - loss: 0.0030 - accuracy: 0.9998
 269/1688 [===>..........................] - ETA: 7s - loss: 0.0032 - accuracy: 0.9997
 279/1688 [===>..........................] - ETA: 7s - loss: 0.0031 - accuracy: 0.9997
 289/1688 [====>.........................] - ETA: 6s - loss: 0.0032 - accuracy: 0.9997
 300/1688 [====>.........................] - ETA: 6s - loss: 0.0031 - accuracy: 0.9997
 311/1688 [====>.........................] - ETA: 6s - loss: 0.0030 - accuracy: 0.9997
 322/1688 [====>.........................] - ETA: 6s - loss: 0.0030 - accuracy: 0.9997
 333/1688 [====>.........................] - ETA: 6s - loss: 0.0030 - accuracy: 0.9997
 344/1688 [=====>........................] - ETA: 6s - loss: 0.0030 - accuracy: 0.9997
 355/1688 [=====>........................] - ETA: 6s - loss: 0.0030 - accuracy: 0.9997
 366/1688 [=====>........................] - ETA: 6s - loss: 0.0031 - accuracy: 0.9997
 377/1688 [=====>........................] - ETA: 6s - loss: 0.0030 - accuracy: 0.9998
 388/1688 [=====>........................] - ETA: 6s - loss: 0.0030 - accuracy: 0.9998
 399/1688 [======>.......................] - ETA: 6s - loss: 0.0030 - accuracy: 0.9998
 410/1688 [======>.......................] - ETA: 6s - loss: 0.0031 - accuracy: 0.9997
 421/1688 [======>.......................] - ETA: 6s - loss: 0.0030 - accuracy: 0.9997
 431/1688 [======>.......................] - ETA: 6s - loss: 0.0030 - accuracy: 0.9997
 442/1688 [======>.......................] - ETA: 6s - loss: 0.0030 - accuracy: 0.9997
 453/1688 [=======>......................] - ETA: 6s - loss: 0.0030 - accuracy: 0.9997
 464/1688 [=======>......................] - ETA: 6s - loss: 0.0030 - accuracy: 0.9997
 474/1688 [=======>......................] - ETA: 6s - loss: 0.0031 - accuracy: 0.9996
 485/1688 [=======>......................] - ETA: 5s - loss: 0.0031 - accuracy: 0.9996
 495/1688 [=======>......................] - ETA: 5s - loss: 0.0030 - accuracy: 0.9996
 505/1688 [=======>......................] - ETA: 5s - loss: 0.0032 - accuracy: 0.9996
 516/1688 [========>.....................] - ETA: 5s - loss: 0.0032 - accuracy: 0.9996
 526/1688 [========>.....................] - ETA: 5s - loss: 0.0032 - accuracy: 0.9996
 536/1688 [========>.....................] - ETA: 5s - loss: 0.0032 - accuracy: 0.9996
 547/1688 [========>.....................] - ETA: 5s - loss: 0.0032 - accuracy: 0.9996
 558/1688 [========>.....................] - ETA: 5s - loss: 0.0032 - accuracy: 0.9996
 569/1688 [=========>....................] - ETA: 5s - loss: 0.0032 - accuracy: 0.9996
 580/1688 [=========>....................] - ETA: 5s - loss: 0.0032 - accuracy: 0.9996
 591/1688 [=========>....................] - ETA: 5s - loss: 0.0032 - accuracy: 0.9996
 601/1688 [=========>....................] - ETA: 5s - loss: 0.0032 - accuracy: 0.9996
 612/1688 [=========>....................] - ETA: 5s - loss: 0.0032 - accuracy: 0.9996
 623/1688 [==========>...................] - ETA: 5s - loss: 0.0032 - accuracy: 0.9996
 634/1688 [==========>...................] - ETA: 5s - loss: 0.0032 - accuracy: 0.9997
 645/1688 [==========>...................] - ETA: 5s - loss: 0.0032 - accuracy: 0.9996
 656/1688 [==========>...................] - ETA: 5s - loss: 0.0032 - accuracy: 0.9996
 667/1688 [==========>...................] - ETA: 5s - loss: 0.0032 - accuracy: 0.9996
 677/1688 [===========>..................] - ETA: 5s - loss: 0.0032 - accuracy: 0.9996
 687/1688 [===========>..................] - ETA: 4s - loss: 0.0031 - accuracy: 0.9996
 698/1688 [===========>..................] - ETA: 4s - loss: 0.0032 - accuracy: 0.9996
 708/1688 [===========>..................] - ETA: 4s - loss: 0.0032 - accuracy: 0.9996
 719/1688 [===========>..................] - ETA: 4s - loss: 0.0032 - accuracy: 0.9996
 729/1688 [===========>..................] - ETA: 4s - loss: 0.0032 - accuracy: 0.9996
 740/1688 [============>.................] - ETA: 4s - loss: 0.0032 - accuracy: 0.9995
 750/1688 [============>.................] - ETA: 4s - loss: 0.0032 - accuracy: 0.9995
 761/1688 [============>.................] - ETA: 4s - loss: 0.0032 - accuracy: 0.9995
 772/1688 [============>.................] - ETA: 4s - loss: 0.0032 - accuracy: 0.9996
 783/1688 [============>.................] - ETA: 4s - loss: 0.0032 - accuracy: 0.9996
 794/1688 [=============>................] - ETA: 4s - loss: 0.0032 - accuracy: 0.9996
 805/1688 [=============>................] - ETA: 4s - loss: 0.0032 - accuracy: 0.9995
 815/1688 [=============>................] - ETA: 4s - loss: 0.0032 - accuracy: 0.9995
 826/1688 [=============>................] - ETA: 4s - loss: 0.0032 - accuracy: 0.9995
 836/1688 [=============>................] - ETA: 4s - loss: 0.0032 - accuracy: 0.9996
 847/1688 [==============>...............] - ETA: 4s - loss: 0.0032 - accuracy: 0.9996
 858/1688 [==============>...............] - ETA: 4s - loss: 0.0032 - accuracy: 0.9996
 869/1688 [==============>...............] - ETA: 4s - loss: 0.0032 - accuracy: 0.9996
 880/1688 [==============>...............] - ETA: 4s - loss: 0.0032 - accuracy: 0.9996
 891/1688 [==============>...............] - ETA: 3s - loss: 0.0032 - accuracy: 0.9996
 902/1688 [===============>..............] - ETA: 3s - loss: 0.0032 - accuracy: 0.9995
 913/1688 [===============>..............] - ETA: 3s - loss: 0.0032 - accuracy: 0.9996
 924/1688 [===============>..............] - ETA: 3s - loss: 0.0032 - accuracy: 0.9996
 935/1688 [===============>..............] - ETA: 3s - loss: 0.0033 - accuracy: 0.9996
 946/1688 [===============>..............] - ETA: 3s - loss: 0.0033 - accuracy: 0.9996
 957/1688 [================>.............] - ETA: 3s - loss: 0.0033 - accuracy: 0.9996
 968/1688 [================>.............] - ETA: 3s - loss: 0.0033 - accuracy: 0.9996
 979/1688 [================>.............] - ETA: 3s - loss: 0.0033 - accuracy: 0.9996
 990/1688 [================>.............] - ETA: 3s - loss: 0.0033 - accuracy: 0.9996
1000/1688 [================>.............] - ETA: 3s - loss: 0.0033 - accuracy: 0.9996
1010/1688 [================>.............] - ETA: 3s - loss: 0.0032 - accuracy: 0.9996
1021/1688 [=================>............] - ETA: 3s - loss: 0.0033 - accuracy: 0.9996
1032/1688 [=================>............] - ETA: 3s - loss: 0.0032 - accuracy: 0.9996
1042/1688 [=================>............] - ETA: 3s - loss: 0.0032 - accuracy: 0.9996
1053/1688 [=================>............] - ETA: 3s - loss: 0.0032 - accuracy: 0.9996
1064/1688 [=================>............] - ETA: 3s - loss: 0.0032 - accuracy: 0.9996
1075/1688 [==================>...........] - ETA: 3s - loss: 0.0032 - accuracy: 0.9996
1085/1688 [==================>...........] - ETA: 2s - loss: 0.0032 - accuracy: 0.9996
1096/1688 [==================>...........] - ETA: 2s - loss: 0.0032 - accuracy: 0.9996
1107/1688 [==================>...........] - ETA: 2s - loss: 0.0032 - accuracy: 0.9996
1118/1688 [==================>...........] - ETA: 2s - loss: 0.0032 - accuracy: 0.9996
1129/1688 [===================>..........] - ETA: 2s - loss: 0.0032 - accuracy: 0.9996
1140/1688 [===================>..........] - ETA: 2s - loss: 0.0032 - accuracy: 0.9996
1151/1688 [===================>..........] - ETA: 2s - loss: 0.0032 - accuracy: 0.9996
1162/1688 [===================>..........] - ETA: 2s - loss: 0.0032 - accuracy: 0.9996
1173/1688 [===================>..........] - ETA: 2s - loss: 0.0032 - accuracy: 0.9996
1184/1688 [====================>.........] - ETA: 2s - loss: 0.0032 - accuracy: 0.9996
1195/1688 [====================>.........] - ETA: 2s - loss: 0.0032 - accuracy: 0.9996
1206/1688 [====================>.........] - ETA: 2s - loss: 0.0032 - accuracy: 0.9996
1217/1688 [====================>.........] - ETA: 2s - loss: 0.0032 - accuracy: 0.9996
1228/1688 [====================>.........] - ETA: 2s - loss: 0.0032 - accuracy: 0.9996
1239/1688 [=====================>........] - ETA: 2s - loss: 0.0033 - accuracy: 0.9996
1250/1688 [=====================>........] - ETA: 2s - loss: 0.0033 - accuracy: 0.9996
1261/1688 [=====================>........] - ETA: 2s - loss: 0.0032 - accuracy: 0.9996
1272/1688 [=====================>........] - ETA: 2s - loss: 0.0032 - accuracy: 0.9996
1282/1688 [=====================>........] - ETA: 2s - loss: 0.0032 - accuracy: 0.9996
1292/1688 [=====================>........] - ETA: 1s - loss: 0.0032 - accuracy: 0.9996
1303/1688 [======================>.......] - ETA: 1s - loss: 0.0032 - accuracy: 0.9996
1313/1688 [======================>.......] - ETA: 1s - loss: 0.0032 - accuracy: 0.9996
1322/1688 [======================>.......] - ETA: 1s - loss: 0.0032 - accuracy: 0.9996
1332/1688 [======================>.......] - ETA: 1s - loss: 0.0033 - accuracy: 0.9996
1343/1688 [======================>.......] - ETA: 1s - loss: 0.0033 - accuracy: 0.9996
1354/1688 [=======================>......] - ETA: 1s - loss: 0.0032 - accuracy: 0.9996
1365/1688 [=======================>......] - ETA: 1s - loss: 0.0033 - accuracy: 0.9996
1376/1688 [=======================>......] - ETA: 1s - loss: 0.0032 - accuracy: 0.9996
1387/1688 [=======================>......] - ETA: 1s - loss: 0.0032 - accuracy: 0.9996
1398/1688 [=======================>......] - ETA: 1s - loss: 0.0033 - accuracy: 0.9996
1409/1688 [========================>.....] - ETA: 1s - loss: 0.0033 - accuracy: 0.9996
1419/1688 [========================>.....] - ETA: 1s - loss: 0.0033 - accuracy: 0.9996
1430/1688 [========================>.....] - ETA: 1s - loss: 0.0033 - accuracy: 0.9996
1441/1688 [========================>.....] - ETA: 1s - loss: 0.0033 - accuracy: 0.9996
1451/1688 [========================>.....] - ETA: 1s - loss: 0.0033 - accuracy: 0.9995
1462/1688 [========================>.....] - ETA: 1s - loss: 0.0033 - accuracy: 0.9995
1473/1688 [=========================>....] - ETA: 1s - loss: 0.0033 - accuracy: 0.9995
1483/1688 [=========================>....] - ETA: 1s - loss: 0.0033 - accuracy: 0.9995
1493/1688 [=========================>....] - ETA: 0s - loss: 0.0034 - accuracy: 0.9995
1504/1688 [=========================>....] - ETA: 0s - loss: 0.0034 - accuracy: 0.9995
1515/1688 [=========================>....] - ETA: 0s - loss: 0.0034 - accuracy: 0.9995
1526/1688 [==========================>...] - ETA: 0s - loss: 0.0034 - accuracy: 0.9995
1537/1688 [==========================>...] - ETA: 0s - loss: 0.0034 - accuracy: 0.9995
1547/1688 [==========================>...] - ETA: 0s - loss: 0.0034 - accuracy: 0.9995
1558/1688 [==========================>...] - ETA: 0s - loss: 0.0034 - accuracy: 0.9995
1569/1688 [==========================>...] - ETA: 0s - loss: 0.0034 - accuracy: 0.9994
1580/1688 [===========================>..] - ETA: 0s - loss: 0.0034 - accuracy: 0.9994
1591/1688 [===========================>..] - ETA: 0s - loss: 0.0035 - accuracy: 0.9994
1602/1688 [===========================>..] - ETA: 0s - loss: 0.0034 - accuracy: 0.9994
1612/1688 [===========================>..] - ETA: 0s - loss: 0.0034 - accuracy: 0.9994
1623/1688 [===========================>..] - ETA: 0s - loss: 0.0034 - accuracy: 0.9994
1634/1688 [============================>.] - ETA: 0s - loss: 0.0034 - accuracy: 0.9994
1645/1688 [============================>.] - ETA: 0s - loss: 0.0034 - accuracy: 0.9994
1656/1688 [============================>.] - ETA: 0s - loss: 0.0034 - accuracy: 0.9995
1667/1688 [============================>.] - ETA: 0s - loss: 0.0034 - accuracy: 0.9995
1678/1688 [============================>.] - ETA: 0s - loss: 0.0034 - accuracy: 0.9995
1688/1688 [==============================] - ETA: 0s - loss: 0.0034 - accuracy: 0.9995
1688/1688 [==============================] - 9s 5ms/step - loss: 0.0034 - accuracy: 0.9995 - val_loss: 0.0502 - val_accuracy: 0.9885

<keras.src.callbacks.History object at 0x7f4b012bee50>
score = model_quantized.evaluate(x_test, y_test, verbose=0)[1]
print('Test accuracy after fine tuning:', score)
Test accuracy after fine tuning: 0.9883999824523926

3. Convert

3.1 Convert to Akida model

When the quantized model produces satisfactory performance, it can be converted to the native Akida format. The convert function returns a model in Akida format ready for inference.

As with Keras, the summary() method provides a textual representation of the Akida model.

from cnn2snn import convert

model_akida = convert(model_quantized)
model_akida.summary()
                Model Summary
______________________________________________
Input shape  Output shape  Sequences  Layers
==============================================
[28, 28, 1]  [1, 1, 10]    1          5
______________________________________________

__________________________________________________________________
Layer (type)                        Output shape  Kernel shape

=============== SW/conv2d-dequantizer_2 (Software) ===============

conv2d (InputConv2D)                [13, 13, 32]  (3, 3, 1, 32)
__________________________________________________________________
depthwise_conv2d (DepthwiseConv2D)  [7, 7, 32]    (3, 3, 32, 1)
__________________________________________________________________
conv2d_1 (Conv2D)                   [7, 7, 64]    (1, 1, 32, 64)
__________________________________________________________________
dense (Dense1D)                     [1, 1, 10]    (3136, 10)
__________________________________________________________________
dequantizer_2 (Dequantizer)         [1, 1, 10]    N/A
__________________________________________________________________

3.2. Check performance

accuracy = model_akida.evaluate(x_test, y_test)
print('Test accuracy after conversion:', accuracy)

# For non-regression purposes
assert accuracy > 0.96
Test accuracy after conversion: 0.9857000112533569

3.3 Show predictions for a single image

Display one of the test images, such as the first image in the dataset from above, to visualize the output of the model.

# Test a single example
sample_image = 0
image = x_test[sample_image]
outputs = model_akida.predict(image.reshape(1, 28, 28, 1))
print('Input Label: %i' % y_test[sample_image])

f, axarr = plt.subplots(1, 2)
axarr[0].imshow(x_test[sample_image].reshape((28, 28)), cmap=cm.Greys_r)
axarr[0].set_title('Class %d' % y_test[sample_image])
axarr[1].bar(range(10), outputs.squeeze())
axarr[1].set_xticks(range(10))
plt.show()

print(outputs.squeeze())
Class 7
Input Label: 7
[-16.708143   -8.418717   -5.9181294  -2.5619938 -20.631516   -8.099142
 -29.145748   13.105431   -8.830281   -0.8264546]

Consider the output from the model above. As is typical in backprop-trained models, the final layer is a Dense layer with one neuron for each of the 10 classes in the dataset. The goal of training is to maximize the response of the neuron corresponding to the label of each training sample while minimizing the responses of the other neurons.

In the bar chart above, you can see the outputs from all 10 neurons. It is easy to see that neuron 7 responds much more strongly than the others. The first sample is indeed a number 7.

Total running time of the script: (2 minutes 10.899 seconds)

Gallery generated by Sphinx-Gallery