Image recognition
Load the fashion image
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
Check the training images
train_images.shape
## (60000, 28, 28)
Check the unique labels
np.unique(train_labels)
## array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=uint8)
Corresponding labels
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
Look at one of the image, i.e. image number 2
plt.figure()
plt.imshow(train_images[1])
plt.colorbar()
## <matplotlib.colorbar.Colorbar object at 0x0000000062D0A240>
plt.grid(False)
plt.show()

Look at the first 25 images
plt.figure(figsize=(10,10))
for i in range(25):
plt.subplot(5,5,i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(train_images[i], cmap=plt.cm.binary)
plt.xlabel(class_names[train_labels[i]])
plt.show()

Modeling with Keras
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10)
])
Compile with the “adam” optimizer
model.compile(
optimizer = 'adam',
loss = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics = ['accuracy']
)
Inspect the model summary
model.summary()
## Model: "sequential"
## _________________________________________________________________
## Layer (type) Output Shape Param #
## =================================================================
## flatten (Flatten) (None, 784) 0
## _________________________________________________________________
## dense (Dense) (None, 128) 100480
## _________________________________________________________________
## dense_1 (Dense) (None, 10) 1290
## =================================================================
## Total params: 101,770
## Trainable params: 101,770
## Non-trainable params: 0
## _________________________________________________________________
Fit the Keras model
model.fit(train_images, train_labels, epochs=10, verbose=1)
## Epoch 1/10
##
## 1/1875 [..............................] - ETA: 0s - loss: 197.2002 - accuracy: 0.1875
## 78/1875 [>.............................] - ETA: 1s - loss: 32.1713 - accuracy: 0.6058
## 159/1875 [=>............................] - ETA: 1s - loss: 20.7551 - accuracy: 0.6586
## 241/1875 [==>...........................] - ETA: 1s - loss: 15.7860 - accuracy: 0.6727
## 323/1875 [====>.........................] - ETA: 0s - loss: 12.7526 - accuracy: 0.6830
## 405/1875 [=====>........................] - ETA: 0s - loss: 10.5624 - accuracy: 0.6710
## 485/1875 [======>.......................] - ETA: 0s - loss: 9.0571 - accuracy: 0.6692
## 567/1875 [========>.....................] - ETA: 0s - loss: 7.9557 - accuracy: 0.6680
## 648/1875 [=========>....................] - ETA: 0s - loss: 7.1281 - accuracy: 0.6669
## 730/1875 [==========>...................] - ETA: 0s - loss: 6.4591 - accuracy: 0.6655
## 811/1875 [===========>..................] - ETA: 0s - loss: 5.9267 - accuracy: 0.6694
## 892/1875 [=============>................] - ETA: 0s - loss: 5.4821 - accuracy: 0.6726
## 973/1875 [==============>...............] - ETA: 0s - loss: 5.1101 - accuracy: 0.6729
## 1054/1875 [===============>..............] - ETA: 0s - loss: 4.7954 - accuracy: 0.6747
## 1134/1875 [=================>............] - ETA: 0s - loss: 4.5250 - accuracy: 0.6768
## 1214/1875 [==================>...........] - ETA: 0s - loss: 4.2921 - accuracy: 0.6786
## 1295/1875 [===================>..........] - ETA: 0s - loss: 4.0854 - accuracy: 0.6797
## 1376/1875 [=====================>........] - ETA: 0s - loss: 3.8988 - accuracy: 0.6816
## 1457/1875 [======================>.......] - ETA: 0s - loss: 3.7277 - accuracy: 0.6848
## 1539/1875 [=======================>......] - ETA: 0s - loss: 3.5778 - accuracy: 0.6860
## 1620/1875 [========================>.....] - ETA: 0s - loss: 3.4460 - accuracy: 0.6859
## 1701/1875 [==========================>...] - ETA: 0s - loss: 3.3244 - accuracy: 0.6868
## 1783/1875 [===========================>..] - ETA: 0s - loss: 3.2088 - accuracy: 0.6886
## 1865/1875 [============================>.] - ETA: 0s - loss: 3.1017 - accuracy: 0.6904
## 1875/1875 [==============================] - 1s 628us/step - loss: 3.0892 - accuracy: 0.6905
## Epoch 2/10
##
## 1/1875 [..............................] - ETA: 0s - loss: 0.7763 - accuracy: 0.7500
## 82/1875 [>.............................] - ETA: 1s - loss: 0.7508 - accuracy: 0.7191
## 164/1875 [=>............................] - ETA: 1s - loss: 0.7473 - accuracy: 0.7245
## 246/1875 [==>...........................] - ETA: 1s - loss: 0.7714 - accuracy: 0.7246
## 327/1875 [====>.........................] - ETA: 0s - loss: 0.7654 - accuracy: 0.7252
## 408/1875 [=====>........................] - ETA: 0s - loss: 0.7581 - accuracy: 0.7268
## 490/1875 [======>.......................] - ETA: 0s - loss: 0.7463 - accuracy: 0.7281
## 571/1875 [========>.....................] - ETA: 0s - loss: 0.7400 - accuracy: 0.7300
## 651/1875 [=========>....................] - ETA: 0s - loss: 0.7434 - accuracy: 0.7308
## 733/1875 [==========>...................] - ETA: 0s - loss: 0.7385 - accuracy: 0.7315
## 819/1875 [============>.................] - ETA: 0s - loss: 0.7383 - accuracy: 0.7314
## 901/1875 [=============>................] - ETA: 0s - loss: 0.7344 - accuracy: 0.7317
## 985/1875 [==============>...............] - ETA: 0s - loss: 0.7317 - accuracy: 0.7306
## 1090/1875 [================>.............] - ETA: 0s - loss: 0.7284 - accuracy: 0.7312
## 1171/1875 [=================>............] - ETA: 0s - loss: 0.7242 - accuracy: 0.7324
## 1253/1875 [===================>..........] - ETA: 0s - loss: 0.7204 - accuracy: 0.7331
## 1356/1875 [====================>.........] - ETA: 0s - loss: 0.7164 - accuracy: 0.7337
## 1440/1875 [======================>.......] - ETA: 0s - loss: 0.7162 - accuracy: 0.7336
## 1520/1875 [=======================>......] - ETA: 0s - loss: 0.7147 - accuracy: 0.7337
## 1601/1875 [========================>.....] - ETA: 0s - loss: 0.7126 - accuracy: 0.7344
## 1703/1875 [==========================>...] - ETA: 0s - loss: 0.7121 - accuracy: 0.7346
## 1787/1875 [===========================>..] - ETA: 0s - loss: 0.7107 - accuracy: 0.7345
## 1867/1875 [============================>.] - ETA: 0s - loss: 0.7089 - accuracy: 0.7348
## 1875/1875 [==============================] - 1s 620us/step - loss: 0.7089 - accuracy: 0.7347
## Epoch 3/10
##
## 1/1875 [..............................] - ETA: 0s - loss: 0.6442 - accuracy: 0.7188
## 73/1875 [>.............................] - ETA: 1s - loss: 0.6375 - accuracy: 0.7397
## 176/1875 [=>............................] - ETA: 1s - loss: 0.6224 - accuracy: 0.7489
## 258/1875 [===>..........................] - ETA: 1s - loss: 0.6304 - accuracy: 0.7447
## 338/1875 [====>.........................] - ETA: 0s - loss: 0.6267 - accuracy: 0.7469
## 420/1875 [=====>........................] - ETA: 0s - loss: 0.6320 - accuracy: 0.7463
## 501/1875 [=======>......................] - ETA: 0s - loss: 0.6279 - accuracy: 0.7491
## 582/1875 [========>.....................] - ETA: 0s - loss: 0.6302 - accuracy: 0.7495
## 664/1875 [=========>....................] - ETA: 0s - loss: 0.6333 - accuracy: 0.7489
## 744/1875 [==========>...................] - ETA: 0s - loss: 0.6360 - accuracy: 0.7476
## 825/1875 [============>.................] - ETA: 0s - loss: 0.6345 - accuracy: 0.7478
## 906/1875 [=============>................] - ETA: 0s - loss: 0.6324 - accuracy: 0.7484
## 988/1875 [==============>...............] - ETA: 0s - loss: 0.6295 - accuracy: 0.7488
## 1069/1875 [================>.............] - ETA: 0s - loss: 0.6302 - accuracy: 0.7497
## 1150/1875 [=================>............] - ETA: 0s - loss: 0.6359 - accuracy: 0.7486
## 1231/1875 [==================>...........] - ETA: 0s - loss: 0.6383 - accuracy: 0.7481
## 1313/1875 [====================>.........] - ETA: 0s - loss: 0.6411 - accuracy: 0.7485
## 1394/1875 [=====================>........] - ETA: 0s - loss: 0.6387 - accuracy: 0.7497
## 1475/1875 [======================>.......] - ETA: 0s - loss: 0.6383 - accuracy: 0.7499
## 1556/1875 [=======================>......] - ETA: 0s - loss: 0.6398 - accuracy: 0.7496
## 1639/1875 [=========================>....] - ETA: 0s - loss: 0.6409 - accuracy: 0.7495
## 1720/1875 [==========================>...] - ETA: 0s - loss: 0.6408 - accuracy: 0.7497
## 1801/1875 [===========================>..] - ETA: 0s - loss: 0.6411 - accuracy: 0.7501
## 1875/1875 [==============================] - 1s 629us/step - loss: 0.6429 - accuracy: 0.7502
## Epoch 4/10
##
## 1/1875 [..............................] - ETA: 0s - loss: 0.4393 - accuracy: 0.8125
## 82/1875 [>.............................] - ETA: 1s - loss: 0.6057 - accuracy: 0.7542
## 163/1875 [=>............................] - ETA: 1s - loss: 0.5972 - accuracy: 0.7646
## 243/1875 [==>...........................] - ETA: 1s - loss: 0.5952 - accuracy: 0.7647
## 324/1875 [====>.........................] - ETA: 0s - loss: 0.6057 - accuracy: 0.7629
## 406/1875 [=====>........................] - ETA: 0s - loss: 0.6043 - accuracy: 0.7639
## 487/1875 [======>.......................] - ETA: 0s - loss: 0.6031 - accuracy: 0.7648
## 569/1875 [========>.....................] - ETA: 0s - loss: 0.5978 - accuracy: 0.7673
## 651/1875 [=========>....................] - ETA: 0s - loss: 0.5982 - accuracy: 0.7662
## 732/1875 [==========>...................] - ETA: 0s - loss: 0.6010 - accuracy: 0.7664
## 814/1875 [============>.................] - ETA: 0s - loss: 0.5971 - accuracy: 0.7681
## 894/1875 [=============>................] - ETA: 0s - loss: 0.5955 - accuracy: 0.7706
## 976/1875 [==============>...............] - ETA: 0s - loss: 0.5928 - accuracy: 0.7723
## 1058/1875 [===============>..............] - ETA: 0s - loss: 0.5920 - accuracy: 0.7742
## 1139/1875 [=================>............] - ETA: 0s - loss: 0.5916 - accuracy: 0.7759
## 1220/1875 [==================>...........] - ETA: 0s - loss: 0.5939 - accuracy: 0.7762
## 1302/1875 [===================>..........] - ETA: 0s - loss: 0.5913 - accuracy: 0.7780
## 1383/1875 [=====================>........] - ETA: 0s - loss: 0.5890 - accuracy: 0.7796
## 1464/1875 [======================>.......] - ETA: 0s - loss: 0.5887 - accuracy: 0.7801
## 1545/1875 [=======================>......] - ETA: 0s - loss: 0.5888 - accuracy: 0.7800
## 1627/1875 [=========================>....] - ETA: 0s - loss: 0.5891 - accuracy: 0.7806
## 1707/1875 [==========================>...] - ETA: 0s - loss: 0.5876 - accuracy: 0.7815
## 1787/1875 [===========================>..] - ETA: 0s - loss: 0.5875 - accuracy: 0.7816
## 1867/1875 [============================>.] - ETA: 0s - loss: 0.5874 - accuracy: 0.7821
## 1875/1875 [==============================] - 1s 627us/step - loss: 0.5873 - accuracy: 0.7822
## Epoch 5/10
##
## 1/1875 [..............................] - ETA: 0s - loss: 0.4660 - accuracy: 0.8438
## 81/1875 [>.............................] - ETA: 1s - loss: 0.5683 - accuracy: 0.8021
## 162/1875 [=>............................] - ETA: 1s - loss: 0.5664 - accuracy: 0.7980
## 243/1875 [==>...........................] - ETA: 1s - loss: 0.5501 - accuracy: 0.8013
## 323/1875 [====>.........................] - ETA: 0s - loss: 0.5522 - accuracy: 0.8031
## 405/1875 [=====>........................] - ETA: 0s - loss: 0.5479 - accuracy: 0.8046
## 487/1875 [======>.......................] - ETA: 0s - loss: 0.5456 - accuracy: 0.8070
## 567/1875 [========>.....................] - ETA: 0s - loss: 0.5476 - accuracy: 0.8057
## 648/1875 [=========>....................] - ETA: 0s - loss: 0.5520 - accuracy: 0.8028
## 729/1875 [==========>...................] - ETA: 0s - loss: 0.5595 - accuracy: 0.8005
## 810/1875 [===========>..................] - ETA: 0s - loss: 0.5560 - accuracy: 0.8024
## 891/1875 [=============>................] - ETA: 0s - loss: 0.5536 - accuracy: 0.8035
## 973/1875 [==============>...............] - ETA: 0s - loss: 0.5534 - accuracy: 0.8044
## 1054/1875 [===============>..............] - ETA: 0s - loss: 0.5521 - accuracy: 0.8047
## 1135/1875 [=================>............] - ETA: 0s - loss: 0.5502 - accuracy: 0.8048
## 1216/1875 [==================>...........] - ETA: 0s - loss: 0.5508 - accuracy: 0.8049
## 1297/1875 [===================>..........] - ETA: 0s - loss: 0.5503 - accuracy: 0.8053
## 1378/1875 [=====================>........] - ETA: 0s - loss: 0.5487 - accuracy: 0.8060
## 1459/1875 [======================>.......] - ETA: 0s - loss: 0.5498 - accuracy: 0.8067
## 1540/1875 [=======================>......] - ETA: 0s - loss: 0.5498 - accuracy: 0.8068
## 1621/1875 [========================>.....] - ETA: 0s - loss: 0.5488 - accuracy: 0.8071
## 1702/1875 [==========================>...] - ETA: 0s - loss: 0.5480 - accuracy: 0.8068
## 1782/1875 [===========================>..] - ETA: 0s - loss: 0.5490 - accuracy: 0.8065
## 1864/1875 [============================>.] - ETA: 0s - loss: 0.5488 - accuracy: 0.8067
## 1875/1875 [==============================] - 1s 628us/step - loss: 0.5491 - accuracy: 0.8067
## Epoch 6/10
##
## 1/1875 [..............................] - ETA: 0s - loss: 0.4672 - accuracy: 0.9062
## 81/1875 [>.............................] - ETA: 1s - loss: 0.5031 - accuracy: 0.8218
## 163/1875 [=>............................] - ETA: 1s - loss: 0.5100 - accuracy: 0.8215
## 238/1875 [==>...........................] - ETA: 1s - loss: 0.5264 - accuracy: 0.8172
## 318/1875 [====>.........................] - ETA: 0s - loss: 0.5312 - accuracy: 0.8148
## 399/1875 [=====>........................] - ETA: 0s - loss: 0.5266 - accuracy: 0.8166
## 479/1875 [======>.......................] - ETA: 0s - loss: 0.5347 - accuracy: 0.8147
## 559/1875 [=======>......................] - ETA: 0s - loss: 0.5282 - accuracy: 0.8164
## 639/1875 [=========>....................] - ETA: 0s - loss: 0.5265 - accuracy: 0.8170
## 720/1875 [==========>...................] - ETA: 0s - loss: 0.5240 - accuracy: 0.8168
## 800/1875 [===========>..................] - ETA: 0s - loss: 0.5243 - accuracy: 0.8166
## 880/1875 [=============>................] - ETA: 0s - loss: 0.5227 - accuracy: 0.8171
## 960/1875 [==============>...............] - ETA: 0s - loss: 0.5209 - accuracy: 0.8175
## 1040/1875 [===============>..............] - ETA: 0s - loss: 0.5177 - accuracy: 0.8181
## 1120/1875 [================>.............] - ETA: 0s - loss: 0.5155 - accuracy: 0.8189
## 1200/1875 [==================>...........] - ETA: 0s - loss: 0.5192 - accuracy: 0.8180
## 1279/1875 [===================>..........] - ETA: 0s - loss: 0.5228 - accuracy: 0.8174
## 1359/1875 [====================>.........] - ETA: 0s - loss: 0.5217 - accuracy: 0.8179
## 1440/1875 [======================>.......] - ETA: 0s - loss: 0.5208 - accuracy: 0.8178
## 1521/1875 [=======================>......] - ETA: 0s - loss: 0.5197 - accuracy: 0.8180
## 1601/1875 [========================>.....] - ETA: 0s - loss: 0.5204 - accuracy: 0.8184
## 1704/1875 [==========================>...] - ETA: 0s - loss: 0.5223 - accuracy: 0.8178
## 1785/1875 [===========================>..] - ETA: 0s - loss: 0.5237 - accuracy: 0.8170
## 1865/1875 [============================>.] - ETA: 0s - loss: 0.5252 - accuracy: 0.8163
## 1875/1875 [==============================] - 1s 634us/step - loss: 0.5253 - accuracy: 0.8163
## Epoch 7/10
##
## 1/1875 [..............................] - ETA: 0s - loss: 0.5994 - accuracy: 0.8125
## 94/1875 [>.............................] - ETA: 1s - loss: 0.5563 - accuracy: 0.8005
## 177/1875 [=>............................] - ETA: 1s - loss: 0.5385 - accuracy: 0.8120
## 257/1875 [===>..........................] - ETA: 1s - loss: 0.5421 - accuracy: 0.8112
## 337/1875 [====>.........................] - ETA: 0s - loss: 0.5272 - accuracy: 0.8151
## 419/1875 [=====>........................] - ETA: 0s - loss: 0.5271 - accuracy: 0.8153
## 520/1875 [=======>......................] - ETA: 0s - loss: 0.5213 - accuracy: 0.8189
## 601/1875 [========>.....................] - ETA: 0s - loss: 0.5154 - accuracy: 0.8205
## 682/1875 [=========>....................] - ETA: 0s - loss: 0.5108 - accuracy: 0.8217
## 785/1875 [===========>..................] - ETA: 0s - loss: 0.5108 - accuracy: 0.8213
## 865/1875 [============>.................] - ETA: 0s - loss: 0.5107 - accuracy: 0.8220
## 945/1875 [==============>...............] - ETA: 0s - loss: 0.5112 - accuracy: 0.8223
## 1025/1875 [===============>..............] - ETA: 0s - loss: 0.5099 - accuracy: 0.8226
## 1105/1875 [================>.............] - ETA: 0s - loss: 0.5103 - accuracy: 0.8222
## 1185/1875 [=================>............] - ETA: 0s - loss: 0.5093 - accuracy: 0.8220
## 1266/1875 [===================>..........] - ETA: 0s - loss: 0.5100 - accuracy: 0.8218
## 1346/1875 [====================>.........] - ETA: 0s - loss: 0.5108 - accuracy: 0.8221
## 1426/1875 [=====================>........] - ETA: 0s - loss: 0.5100 - accuracy: 0.8221
## 1506/1875 [=======================>......] - ETA: 0s - loss: 0.5097 - accuracy: 0.8223
## 1586/1875 [========================>.....] - ETA: 0s - loss: 0.5083 - accuracy: 0.8224
## 1662/1875 [=========================>....] - ETA: 0s - loss: 0.5084 - accuracy: 0.8223
## 1742/1875 [==========================>...] - ETA: 0s - loss: 0.5085 - accuracy: 0.8221
## 1822/1875 [============================>.] - ETA: 0s - loss: 0.5083 - accuracy: 0.8223
## 1875/1875 [==============================] - 1s 633us/step - loss: 0.5093 - accuracy: 0.8218
## Epoch 8/10
##
## 1/1875 [..............................] - ETA: 0s - loss: 0.5888 - accuracy: 0.8438
## 81/1875 [>.............................] - ETA: 1s - loss: 0.5060 - accuracy: 0.8310
## 160/1875 [=>............................] - ETA: 1s - loss: 0.5203 - accuracy: 0.8230
## 241/1875 [==>...........................] - ETA: 1s - loss: 0.5166 - accuracy: 0.8239
## 321/1875 [====>.........................] - ETA: 0s - loss: 0.5148 - accuracy: 0.8240
## 400/1875 [=====>........................] - ETA: 0s - loss: 0.5118 - accuracy: 0.8252
## 479/1875 [======>.......................] - ETA: 0s - loss: 0.5101 - accuracy: 0.8240
## 559/1875 [=======>......................] - ETA: 0s - loss: 0.5060 - accuracy: 0.8250
## 638/1875 [=========>....................] - ETA: 0s - loss: 0.5095 - accuracy: 0.8234
## 718/1875 [==========>...................] - ETA: 0s - loss: 0.5085 - accuracy: 0.8238
## 798/1875 [===========>..................] - ETA: 0s - loss: 0.5112 - accuracy: 0.8219
## 890/1875 [=============>................] - ETA: 0s - loss: 0.5076 - accuracy: 0.8231
## 969/1875 [==============>...............] - ETA: 0s - loss: 0.5075 - accuracy: 0.8238
## 1051/1875 [===============>..............] - ETA: 0s - loss: 0.5073 - accuracy: 0.8240
## 1132/1875 [=================>............] - ETA: 0s - loss: 0.5102 - accuracy: 0.8237
## 1212/1875 [==================>...........] - ETA: 0s - loss: 0.5093 - accuracy: 0.8239
## 1290/1875 [===================>..........] - ETA: 0s - loss: 0.5100 - accuracy: 0.8239
## 1392/1875 [=====================>........] - ETA: 0s - loss: 0.5117 - accuracy: 0.8241
## 1494/1875 [======================>.......] - ETA: 0s - loss: 0.5114 - accuracy: 0.8247
## 1574/1875 [========================>.....] - ETA: 0s - loss: 0.5111 - accuracy: 0.8250
## 1652/1875 [=========================>....] - ETA: 0s - loss: 0.5104 - accuracy: 0.8251
## 1754/1875 [===========================>..] - ETA: 0s - loss: 0.5100 - accuracy: 0.8253
## 1835/1875 [============================>.] - ETA: 0s - loss: 0.5103 - accuracy: 0.8249
## 1875/1875 [==============================] - 1s 639us/step - loss: 0.5104 - accuracy: 0.8250
## Epoch 9/10
##
## 1/1875 [..............................] - ETA: 0s - loss: 0.5548 - accuracy: 0.7500
## 88/1875 [>.............................] - ETA: 1s - loss: 0.5042 - accuracy: 0.8295
## 167/1875 [=>............................] - ETA: 1s - loss: 0.5019 - accuracy: 0.8293
## 245/1875 [==>...........................] - ETA: 1s - loss: 0.5067 - accuracy: 0.8255
## 325/1875 [====>.........................] - ETA: 0s - loss: 0.5166 - accuracy: 0.8230
## 403/1875 [=====>........................] - ETA: 0s - loss: 0.5056 - accuracy: 0.8273
## 483/1875 [======>.......................] - ETA: 0s - loss: 0.4978 - accuracy: 0.8296
## 564/1875 [========>.....................] - ETA: 0s - loss: 0.5003 - accuracy: 0.8271
## 644/1875 [=========>....................] - ETA: 0s - loss: 0.5043 - accuracy: 0.8272
## 724/1875 [==========>...................] - ETA: 0s - loss: 0.5039 - accuracy: 0.8271
## 804/1875 [===========>..................] - ETA: 0s - loss: 0.5032 - accuracy: 0.8277
## 884/1875 [=============>................] - ETA: 0s - loss: 0.5041 - accuracy: 0.8279
## 963/1875 [==============>...............] - ETA: 0s - loss: 0.5050 - accuracy: 0.8265
## 1043/1875 [===============>..............] - ETA: 0s - loss: 0.5049 - accuracy: 0.8262
## 1123/1875 [================>.............] - ETA: 0s - loss: 0.5022 - accuracy: 0.8271
## 1202/1875 [==================>...........] - ETA: 0s - loss: 0.5024 - accuracy: 0.8272
## 1282/1875 [===================>..........] - ETA: 0s - loss: 0.5018 - accuracy: 0.8270
## 1361/1875 [====================>.........] - ETA: 0s - loss: 0.5023 - accuracy: 0.8265
## 1440/1875 [======================>.......] - ETA: 0s - loss: 0.5035 - accuracy: 0.8259
## 1520/1875 [=======================>......] - ETA: 0s - loss: 0.5023 - accuracy: 0.8267
## 1599/1875 [========================>.....] - ETA: 0s - loss: 0.5002 - accuracy: 0.8275
## 1677/1875 [=========================>....] - ETA: 0s - loss: 0.4992 - accuracy: 0.8278
## 1756/1875 [===========================>..] - ETA: 0s - loss: 0.5031 - accuracy: 0.8270
## 1836/1875 [============================>.] - ETA: 0s - loss: 0.5018 - accuracy: 0.8273
## 1875/1875 [==============================] - 1s 639us/step - loss: 0.5010 - accuracy: 0.8274
## Epoch 10/10
##
## 1/1875 [..............................] - ETA: 0s - loss: 0.4616 - accuracy: 0.7500
## 80/1875 [>.............................] - ETA: 1s - loss: 0.4622 - accuracy: 0.8285
## 159/1875 [=>............................] - ETA: 1s - loss: 0.4687 - accuracy: 0.8320
## 238/1875 [==>...........................] - ETA: 1s - loss: 0.4728 - accuracy: 0.8309
## 318/1875 [====>.........................] - ETA: 0s - loss: 0.4762 - accuracy: 0.8305
## 396/1875 [=====>........................] - ETA: 0s - loss: 0.4870 - accuracy: 0.8271
## 476/1875 [======>.......................] - ETA: 0s - loss: 0.4879 - accuracy: 0.8267
## 556/1875 [=======>......................] - ETA: 0s - loss: 0.4883 - accuracy: 0.8267
## 631/1875 [=========>....................] - ETA: 0s - loss: 0.4895 - accuracy: 0.8270
## 710/1875 [==========>...................] - ETA: 0s - loss: 0.4849 - accuracy: 0.8288
## 790/1875 [===========>..................] - ETA: 0s - loss: 0.4814 - accuracy: 0.8304
## 869/1875 [============>.................] - ETA: 0s - loss: 0.4805 - accuracy: 0.8304
## 949/1875 [==============>...............] - ETA: 0s - loss: 0.4864 - accuracy: 0.8292
## 1029/1875 [===============>..............] - ETA: 0s - loss: 0.4867 - accuracy: 0.8291
## 1108/1875 [================>.............] - ETA: 0s - loss: 0.4877 - accuracy: 0.8291
## 1187/1875 [=================>............] - ETA: 0s - loss: 0.4877 - accuracy: 0.8295
## 1266/1875 [===================>..........] - ETA: 0s - loss: 0.4905 - accuracy: 0.8288
## 1345/1875 [====================>.........] - ETA: 0s - loss: 0.4918 - accuracy: 0.8285
## 1423/1875 [=====================>........] - ETA: 0s - loss: 0.4909 - accuracy: 0.8289
## 1502/1875 [=======================>......] - ETA: 0s - loss: 0.4925 - accuracy: 0.8285
## 1582/1875 [========================>.....] - ETA: 0s - loss: 0.4927 - accuracy: 0.8284
## 1662/1875 [=========================>....] - ETA: 0s - loss: 0.4922 - accuracy: 0.8286
## 1742/1875 [==========================>...] - ETA: 0s - loss: 0.4919 - accuracy: 0.8288
## 1821/1875 [============================>.] - ETA: 0s - loss: 0.4941 - accuracy: 0.8284
## 1875/1875 [==============================] - 1s 642us/step - loss: 0.4932 - accuracy: 0.8286
## <tensorflow.python.keras.callbacks.History object at 0x000000006B19C198>
Training history
history = model.history.history
history
## {'loss': [3.0892131328582764, 0.7089070677757263, 0.6428943872451782, 0.5873007774353027, 0.5490626096725464, 0.5253157615661621, 0.5092673897743225, 0.5103991031646729, 0.5009756684303284, 0.4932428300380707], 'accuracy': [0.6904500126838684, 0.7346833348274231, 0.7501500248908997, 0.7821999788284302, 0.8067333102226257, 0.8162833452224731, 0.8218166828155518, 0.8250333070755005, 0.8274000287055969, 0.8286499977111816]}
For visualization, using R
py$history %>%
as_tibble() %>%
unnest(loss, accuracy) %>%
rowid_to_column() %>%
pivot_longer(-rowid) %>%
ggplot(aes(rowid, value, color = name)) +
geom_line() +
geom_point() +
labs(title = "Training Accuracy")
## Warning: unnest() has a new interface. See ?unnest for details.
## Try `df %>% unnest(c(loss, accuracy))`, with `mutate()` if needed

Test accuracy
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
## 313/313 - 0s - loss: 0.5617 - accuracy: 0.8131
Finally, make predictions
probability_model = tf.keras.Sequential([model, tf.keras.layers.Softmax()])
predictions = probability_model.predict(test_images)
predictions[1]
## array([1.0913470e-06, 5.5121142e-17, 8.4501761e-01, 2.6197949e-05,
## 5.6214958e-02, 9.4797621e-37, 9.8740146e-02, 0.0000000e+00,
## 3.9651447e-08, 0.0000000e+00], dtype=float32)
np.argmax(predictions[1])
## 2
np.max(predictions[1])
## 0.8450176
class_names[np.argmax(predictions[1])]
## 'Pullover'
plt.figure()
plt.imshow(test_images[1])
plt.colorbar()
## <matplotlib.colorbar.Colorbar object at 0x000000006C4B8F60>
plt.grid(False)
plt.show()

print("Next blog will be on setting up the loca GPU")
## Next blog will be on setting up the loca GPU