Treine sua primeira rede neural: classificação básica

Veja em TensorFlow.org Execute em Google Colab Veja código fonte em GitHub Baixe o notebook

Este tutorial treina um modelo de rede neural para classificação de imagens de roupas, como tênis e camisetas. Tudo bem se você não entender todos os detalhes; este é um visão geral de um programa do TensorFlow com detalhes explicados enquanto progredimos.

O guia usa tf.keras, uma API alto-nível para construir e treinar modelos no TensorFlow.

# TensorFlow e tf.keras
import tensorflow as tf
from tensorflow import keras

# Bibliotecas Auxiliares
import numpy as np
import matplotlib.pyplot as plt

print(tf.__version__)
2.4.1

Importe a base de dados Fashion MNIST

Esse tutorial usa a base de dados Fashion MNIST que contém 70,000 imagens em tons de cinza em 10 categorias. As imagens mostram artigos individuais de roupas com baixa resolução (28 por 28 pixels), como vemos aqui:

Fashion MNIST sprite
Figure 1. Amostras de Fashion-MNIST (por Zalando, MIT License).
 

Fashion MNIST tem como intenção substituir a clássica base de dados MNIST— frequentemente usada como "Hello, World" de programas de aprendizado de máquina (machine learning) para visão computacional. A base de dados MNIST contém imagens de dígitos escritos à mão (0, 1, 2, etc.) em um formato idêntico ao dos artigos de roupas que usaremos aqui.

Esse tutorial usa a Fashion MNIST para variar, e porque é um problema um pouco mais desafiador que o regular MNIST. Ambas bases são relativamente pequenas e são usadas para verificar se um algoritmo funciona como esperado. Elas são bons pontos de partida para testar e debugar código.

Usaremos 60,000 imagens para treinar nossa rede e 10,000 imagens para avaliar quão precisamente nossa rede aprendeu a classificar as imagens. Você pode acessar a Fashion MNIST diretamente do TensorFlow. Importe e carregue a base Fashion MNIST diretamente do TensorFlow:

fashion_mnist = keras.datasets.fashion_mnist

(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz

 8192/29515 [=======>......................] - ETA: 0s
32768/29515 [=================================] - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz
8192/26421880 [..............................] - ETA: 0s
5054464/26421880 [====>.........................] - ETA: 0s
10657792/26421880 [===========>..................] - ETA: 0s
14450688/26421880 [===============>..............] - ETA: 0s
19300352/26421880 [====================>.........] - ETA: 0s
24920064/26421880 [===========================>..] - ETA: 0s
26427392/26421880 [==============================] - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz

8192/5148 [===============================================] - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz

   8192/4422102 [..............................] - ETA: 0s
4423680/4422102 [==============================] - 0s 0us/step

Carregando a base de dados que retorna quatro NumPy arrays:

  • Os arrays train_images e train_labels são o conjunto de treinamento— os dados do modelo usados para aprender.
  • O modelo é testado com o conjunto de teste, os arrays test_images e test_labels.

As imagens são arrays NumPy de 28x28, com os valores de pixels entre 0 to 255. As labels (alvo da classificação) são um array de inteiros, no intervalo de 0 a 9. Esse corresponde com a classe de roupa que cada imagem representa:

Label Classe
0 Camisetas/Top (T-shirt/top)
1 Calça (Trouser)
2 Suéter (Pullover)
3 Vestidos (Dress)
4 Casaco (Coat)
5 Sandálias (Sandal)
6 Camisas (Shirt)
7 Tênis (Sneaker)
8 Bolsa (Bag)
9 Botas (Ankle boot)

Cada imagem é mapeada com um só label. Já que o nome das classes não são incluídas na base de dados, armazene os dados aqui para usá-los mais tarde quando plotarmos as imagens:

class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
               'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']

Explore os dados

Vamos explorar o formato da base de dados antes de treinar o modelo. O próximo comando mostra que existem 60000 imagens no conjunto de treinamento, e cada imagem é representada em 28 x 28 pixels:

train_images.shape
(60000, 28, 28)

Do mesmo modo, existem 60000 labels no conjunto de treinamento:

len(train_labels)
60000

Cada label é um inteiro entre 0 e 9:

train_labels
array([9, 0, 0, ..., 3, 0, 5], dtype=uint8)

Existem 10000 imagens no conjunto de teste. Novamente, cada imagem é representada por 28 x 28 pixels:

test_images.shape
(10000, 28, 28)

E um conjunto de teste contendo 10000 labels das imagens :

len(test_labels)
10000

Pré-processe os dados

Os dados precisam ser pré-processados antes de treinar a rede. Se você inspecionar a primeira imagem do conjunto de treinamento, você verá que os valores dos pixels estão entre 0 e 255:

plt.figure()
plt.imshow(train_images[0])
plt.colorbar()
plt.grid(False)
plt.show()

png

Escalaremos esses valores no intervalo de 0 e 1 antes de alimentar o modelo da rede neural. Para fazer isso, dividimos os valores por 255. É importante que o conjunto de treinamento e o conjunto de teste podem ser pré-processados do mesmo modo:

train_images = train_images / 255.0

test_images = test_images / 255.0

Para verificar que os dados estão no formato correto e que estamos prontos para construir e treinar a rede, vamos mostrar as primeiras 25 imagens do conjunto de treinamento e mostrar o nome das classes de cada imagem abaixo.

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()

png

Construindo o modelo

Construir a rede neural requer configurar as camadas do modelo, e depois, compilar o modelo.

Montar as camadas

O principal bloco de construção da rede neural é a camada (layer). As camadas (layers) extraem representações dos dados inseridos na rede. Com sorte, essas representações são significativas para o problema à mão.

Muito do deep learning consiste em encadear simples camadas. Muitas camadas, como tf.keras.layers.Dense, tem parâmetros que são aprendidos durante o treinamento.

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(10, activation='softmax')
])

A primeira camada da rede, tf.keras.layers.Flatten, transforma o formato da imagem de um array de imagens de duas dimensões (of 28 by 28 pixels) para um array de uma dimensão (de 28 * 28 = 784 pixels). Pense nessa camada como camadas não empilhadas de pixels de uma imagem e os enfilere. Essa camada não tem parâmetros para aprender; ela só reformata os dados.

Depois dos pixels serem achatados, a rede consiste de uma sequência de duas camadas tf.keras.layers.Dense. Essas são camadas neurais densely connected, ou fully connected. A primeira camada Dense tem 128 nós (ou neurônios). A segunda (e última) camada é uma softmax de 10 nós que retorna um array de 10 probabilidades, cuja soma resulta em 1. Cada nó contém um valor que indica a probabilidade de que aquela imagem pertence a uma das 10 classes.

Compile o modelo

Antes do modelo estar pronto para o treinamento, é necessário algumas configurações a mais. Essas serão adicionadas no passo de compilação:

  • Função Loss —Essa mede quão precisa o modelo é durante o treinamento. Queremos minimizar a função para guiar o modelo para a direção certa.
  • Optimizer —Isso é como o modelo se atualiza com base no dado que ele vê e sua função loss.
  • Métricas —usadas para monitorar os passos de treinamento e teste. O exemplo abaixo usa a acurácia, a fração das imagens que foram classificadas corretamente.
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

Treine o modelo

Treinar a rede neural requer os seguintes passos:

  1. Alimente com os dados de treinamento, o modelo. Neste exemplo, os dados de treinamento são os arrays train_images e train_labels.
  2. O modelo aprende como associar as imagens as labels.
  3. Perguntamos ao modelo para fazer previsões sobre o conjunto de teste — nesse exemplo, o array test_images. Verificamos se as previsões combinaram com as labels do array test_labels.

Para começar a treinar, chame o método model.fit— assim chamado, porque ele "encaixa" o modelo no conjunto de treinamento:

model.fit(train_images, train_labels, epochs=10)
Epoch 1/10
1/1875 [..............................] - ETA: 23:08 - loss: 2.4210 - accuracy: 0.1250
31/1875 [..............................] - ETA: 3s - loss: 1.7270 - accuracy: 0.4177
62/1875 [..............................] - ETA: 2s - loss: 1.4613 - accuracy: 0.5074
93/1875 [>.............................] - ETA: 2s - loss: 1.3117 - accuracy: 0.5576
125/1875 [=>............................] - ETA: 2s - loss: 1.2086 - accuracy: 0.5916
156/1875 [=>............................] - ETA: 2s - loss: 1.1364 - accuracy: 0.6151
187/1875 [=>............................] - ETA: 2s - loss: 1.0816 - accuracy: 0.6328
216/1875 [==>...........................] - ETA: 2s - loss: 1.0407 - accuracy: 0.6462
247/1875 [==>...........................] - ETA: 2s - loss: 1.0041 - accuracy: 0.6584
279/1875 [===>..........................] - ETA: 2s - loss: 0.9721 - accuracy: 0.6691
311/1875 [===>..........................] - ETA: 2s - loss: 0.9452 - accuracy: 0.6779
342/1875 [====>.........................] - ETA: 2s - loss: 0.9227 - accuracy: 0.6852
373/1875 [====>.........................] - ETA: 2s - loss: 0.9029 - accuracy: 0.6917
404/1875 [=====>........................] - ETA: 2s - loss: 0.8854 - accuracy: 0.6974
436/1875 [=====>........................] - ETA: 2s - loss: 0.8693 - accuracy: 0.7027
467/1875 [======>.......................] - ETA: 2s - loss: 0.8550 - accuracy: 0.7074
499/1875 [======>.......................] - ETA: 2s - loss: 0.8415 - accuracy: 0.7119
530/1875 [=======>......................] - ETA: 2s - loss: 0.8297 - accuracy: 0.7159
561/1875 [=======>......................] - ETA: 2s - loss: 0.8186 - accuracy: 0.7196
592/1875 [========>.....................] - ETA: 2s - loss: 0.8082 - accuracy: 0.7231
623/1875 [========>.....................] - ETA: 2s - loss: 0.7985 - accuracy: 0.7264
655/1875 [=========>....................] - ETA: 1s - loss: 0.7892 - accuracy: 0.7295
687/1875 [=========>....................] - ETA: 1s - loss: 0.7804 - accuracy: 0.7325
718/1875 [==========>...................] - ETA: 1s - loss: 0.7723 - accuracy: 0.7351
749/1875 [==========>...................] - ETA: 1s - loss: 0.7648 - accuracy: 0.7377
780/1875 [===========>..................] - ETA: 1s - loss: 0.7577 - accuracy: 0.7400
810/1875 [===========>..................] - ETA: 1s - loss: 0.7512 - accuracy: 0.7422
841/1875 [============>.................] - ETA: 1s - loss: 0.7448 - accuracy: 0.7444
873/1875 [============>.................] - ETA: 1s - loss: 0.7384 - accuracy: 0.7465
905/1875 [=============>................] - ETA: 1s - loss: 0.7323 - accuracy: 0.7485
937/1875 [=============>................] - ETA: 1s - loss: 0.7265 - accuracy: 0.7505
968/1875 [==============>...............] - ETA: 1s - loss: 0.7212 - accuracy: 0.7523
999/1875 [==============>...............] - ETA: 1s - loss: 0.7161 - accuracy: 0.7540
1030/1875 [===============>..............] - ETA: 1s - loss: 0.7112 - accuracy: 0.7556
1061/1875 [===============>..............] - ETA: 1s - loss: 0.7064 - accuracy: 0.7572
1093/1875 [================>.............] - ETA: 1s - loss: 0.7017 - accuracy: 0.7588
1124/1875 [================>.............] - ETA: 1s - loss: 0.6974 - accuracy: 0.7602
1155/1875 [=================>............] - ETA: 1s - loss: 0.6932 - accuracy: 0.7616
1185/1875 [=================>............] - ETA: 1s - loss: 0.6892 - accuracy: 0.7629
1215/1875 [==================>...........] - ETA: 1s - loss: 0.6854 - accuracy: 0.7642
1245/1875 [==================>...........] - ETA: 1s - loss: 0.6817 - accuracy: 0.7654
1275/1875 [===================>..........] - ETA: 0s - loss: 0.6782 - accuracy: 0.7666
1306/1875 [===================>..........] - ETA: 0s - loss: 0.6746 - accuracy: 0.7678
1337/1875 [====================>.........] - ETA: 0s - loss: 0.6711 - accuracy: 0.7689
1368/1875 [====================>.........] - ETA: 0s - loss: 0.6677 - accuracy: 0.7700
1398/1875 [=====================>........] - ETA: 0s - loss: 0.6645 - accuracy: 0.7711
1429/1875 [=====================>........] - ETA: 0s - loss: 0.6614 - accuracy: 0.7721
1460/1875 [======================>.......] - ETA: 0s - loss: 0.6583 - accuracy: 0.7732
1491/1875 [======================>.......] - ETA: 0s - loss: 0.6553 - accuracy: 0.7741
1521/1875 [=======================>......] - ETA: 0s - loss: 0.6524 - accuracy: 0.7750
1552/1875 [=======================>......] - ETA: 0s - loss: 0.6496 - accuracy: 0.7760
1583/1875 [========================>.....] - ETA: 0s - loss: 0.6468 - accuracy: 0.7769
1614/1875 [========================>.....] - ETA: 0s - loss: 0.6441 - accuracy: 0.7778
1645/1875 [=========================>....] - ETA: 0s - loss: 0.6414 - accuracy: 0.7786
1676/1875 [=========================>....] - ETA: 0s - loss: 0.6388 - accuracy: 0.7795
1707/1875 [==========================>...] - ETA: 0s - loss: 0.6363 - accuracy: 0.7803
1738/1875 [==========================>...] - ETA: 0s - loss: 0.6339 - accuracy: 0.7811
1769/1875 [===========================>..] - ETA: 0s - loss: 0.6315 - accuracy: 0.7819
1800/1875 [===========================>..] - ETA: 0s - loss: 0.6292 - accuracy: 0.7826
1831/1875 [============================>.] - ETA: 0s - loss: 0.6269 - accuracy: 0.7834
1862/1875 [============================>.] - ETA: 0s - loss: 0.6247 - accuracy: 0.7841
1875/1875 [==============================] - 4s 2ms/step - loss: 0.6237 - accuracy: 0.7844
Epoch 2/10

   1/1875 [..............................] - ETA: 3s - loss: 0.4956 - accuracy: 0.8125
32/1875 [..............................] - ETA: 3s - loss: 0.3564 - accuracy: 0.8863
63/1875 [>.............................] - ETA: 2s - loss: 0.3654 - accuracy: 0.8768
93/1875 [>.............................] - ETA: 2s - loss: 0.3735 - accuracy: 0.8712
123/1875 [>.............................] - ETA: 2s - loss: 0.3793 - accuracy: 0.8677
154/1875 [=>............................] - ETA: 2s - loss: 0.3821 - accuracy: 0.8658
185/1875 [=>............................] - ETA: 2s - loss: 0.3831 - accuracy: 0.8647
216/1875 [==>...........................] - ETA: 2s - loss: 0.3841 - accuracy: 0.8638
245/1875 [==>...........................] - ETA: 2s - loss: 0.3849 - accuracy: 0.8633
276/1875 [===>..........................] - ETA: 2s - loss: 0.3852 - accuracy: 0.8630
306/1875 [===>..........................] - ETA: 2s - loss: 0.3852 - accuracy: 0.8628
337/1875 [====>.........................] - ETA: 2s - loss: 0.3853 - accuracy: 0.8625
367/1875 [====>.........................] - ETA: 2s - loss: 0.3853 - accuracy: 0.8624
398/1875 [=====>........................] - ETA: 2s - loss: 0.3851 - accuracy: 0.8623
429/1875 [=====>........................] - ETA: 2s - loss: 0.3850 - accuracy: 0.8622
459/1875 [======>.......................] - ETA: 2s - loss: 0.3849 - accuracy: 0.8621
489/1875 [======>.......................] - ETA: 2s - loss: 0.3848 - accuracy: 0.8621
520/1875 [=======>......................] - ETA: 2s - loss: 0.3847 - accuracy: 0.8621
551/1875 [=======>......................] - ETA: 2s - loss: 0.3845 - accuracy: 0.8621
581/1875 [========>.....................] - ETA: 2s - loss: 0.3844 - accuracy: 0.8621
612/1875 [========>.....................] - ETA: 2s - loss: 0.3843 - accuracy: 0.8620
642/1875 [=========>....................] - ETA: 2s - loss: 0.3843 - accuracy: 0.8620
673/1875 [=========>....................] - ETA: 1s - loss: 0.3843 - accuracy: 0.8620
704/1875 [==========>...................] - ETA: 1s - loss: 0.3843 - accuracy: 0.8620
735/1875 [==========>...................] - ETA: 1s - loss: 0.3842 - accuracy: 0.8620
766/1875 [===========>..................] - ETA: 1s - loss: 0.3841 - accuracy: 0.8620
797/1875 [===========>..................] - ETA: 1s - loss: 0.3839 - accuracy: 0.8620
828/1875 [============>.................] - ETA: 1s - loss: 0.3838 - accuracy: 0.8621
859/1875 [============>.................] - ETA: 1s - loss: 0.3837 - accuracy: 0.8621
890/1875 [=============>................] - ETA: 1s - loss: 0.3836 - accuracy: 0.8621
921/1875 [=============>................] - ETA: 1s - loss: 0.3835 - accuracy: 0.8621
951/1875 [==============>...............] - ETA: 1s - loss: 0.3835 - accuracy: 0.8621
981/1875 [==============>...............] - ETA: 1s - loss: 0.3835 - accuracy: 0.8620
1012/1875 [===============>..............] - ETA: 1s - loss: 0.3835 - accuracy: 0.8620
1043/1875 [===============>..............] - ETA: 1s - loss: 0.3834 - accuracy: 0.8620
1074/1875 [================>.............] - ETA: 1s - loss: 0.3834 - accuracy: 0.8620
1103/1875 [================>.............] - ETA: 1s - loss: 0.3834 - accuracy: 0.8620
1134/1875 [=================>............] - ETA: 1s - loss: 0.3833 - accuracy: 0.8620
1165/1875 [=================>............] - ETA: 1s - loss: 0.3832 - accuracy: 0.8620
1196/1875 [==================>...........] - ETA: 1s - loss: 0.3831 - accuracy: 0.8620
1226/1875 [==================>...........] - ETA: 1s - loss: 0.3830 - accuracy: 0.8620
1257/1875 [===================>..........] - ETA: 1s - loss: 0.3829 - accuracy: 0.8620
1288/1875 [===================>..........] - ETA: 0s - loss: 0.3828 - accuracy: 0.8621
1319/1875 [====================>.........] - ETA: 0s - loss: 0.3826 - accuracy: 0.8621
1350/1875 [====================>.........] - ETA: 0s - loss: 0.3825 - accuracy: 0.8621
1381/1875 [=====================>........] - ETA: 0s - loss: 0.3824 - accuracy: 0.8621
1412/1875 [=====================>........] - ETA: 0s - loss: 0.3823 - accuracy: 0.8621
1444/1875 [======================>.......] - ETA: 0s - loss: 0.3821 - accuracy: 0.8622
1475/1875 [======================>.......] - ETA: 0s - loss: 0.3820 - accuracy: 0.8622
1506/1875 [=======================>......] - ETA: 0s - loss: 0.3818 - accuracy: 0.8622
1537/1875 [=======================>......] - ETA: 0s - loss: 0.3817 - accuracy: 0.8623
1568/1875 [========================>.....] - ETA: 0s - loss: 0.3816 - accuracy: 0.8623
1599/1875 [========================>.....] - ETA: 0s - loss: 0.3814 - accuracy: 0.8623
1630/1875 [=========================>....] - ETA: 0s - loss: 0.3813 - accuracy: 0.8624
1662/1875 [=========================>....] - ETA: 0s - loss: 0.3812 - accuracy: 0.8624
1693/1875 [==========================>...] - ETA: 0s - loss: 0.3810 - accuracy: 0.8624
1725/1875 [==========================>...] - ETA: 0s - loss: 0.3809 - accuracy: 0.8624
1756/1875 [===========================>..] - ETA: 0s - loss: 0.3808 - accuracy: 0.8625
1787/1875 [===========================>..] - ETA: 0s - loss: 0.3806 - accuracy: 0.8625
1819/1875 [============================>.] - ETA: 0s - loss: 0.3805 - accuracy: 0.8625
1851/1875 [============================>.] - ETA: 0s - loss: 0.3803 - accuracy: 0.8626
1875/1875 [==============================] - 3s 2ms/step - loss: 0.3802 - accuracy: 0.8626
Epoch 3/10

   1/1875 [..............................] - ETA: 3s - loss: 0.3228 - accuracy: 0.8750
33/1875 [..............................] - ETA: 2s - loss: 0.3210 - accuracy: 0.8735
64/1875 [>.............................] - ETA: 2s - loss: 0.3255 - accuracy: 0.8763
96/1875 [>.............................] - ETA: 2s - loss: 0.3271 - accuracy: 0.8759
128/1875 [=>............................] - ETA: 2s - loss: 0.3297 - accuracy: 0.8750
159/1875 [=>............................] - ETA: 2s - loss: 0.3316 - accuracy: 0.8748
191/1875 [==>...........................] - ETA: 2s - loss: 0.3332 - accuracy: 0.8747
223/1875 [==>...........................] - ETA: 2s - loss: 0.3349 - accuracy: 0.8745
255/1875 [===>..........................] - ETA: 2s - loss: 0.3361 - accuracy: 0.8743
286/1875 [===>..........................] - ETA: 2s - loss: 0.3369 - accuracy: 0.8743
317/1875 [====>.........................] - ETA: 2s - loss: 0.3375 - accuracy: 0.8743
349/1875 [====>.........................] - ETA: 2s - loss: 0.3381 - accuracy: 0.8742
380/1875 [=====>........................] - ETA: 2s - loss: 0.3385 - accuracy: 0.8743
411/1875 [=====>........................] - ETA: 2s - loss: 0.3389 - accuracy: 0.8743
443/1875 [======>.......................] - ETA: 2s - loss: 0.3390 - accuracy: 0.8743
475/1875 [======>.......................] - ETA: 2s - loss: 0.3390 - accuracy: 0.8744
507/1875 [=======>......................] - ETA: 2s - loss: 0.3390 - accuracy: 0.8746
538/1875 [=======>......................] - ETA: 2s - loss: 0.3386 - accuracy: 0.8748
570/1875 [========>.....................] - ETA: 2s - loss: 0.3384 - accuracy: 0.8749
602/1875 [========>.....................] - ETA: 2s - loss: 0.3380 - accuracy: 0.8751
633/1875 [=========>....................] - ETA: 2s - loss: 0.3377 - accuracy: 0.8751
664/1875 [=========>....................] - ETA: 1s - loss: 0.3375 - accuracy: 0.8752
695/1875 [==========>...................] - ETA: 1s - loss: 0.3374 - accuracy: 0.8753
726/1875 [==========>...................] - ETA: 1s - loss: 0.3373 - accuracy: 0.8753
758/1875 [===========>..................] - ETA: 1s - loss: 0.3373 - accuracy: 0.8753
789/1875 [===========>..................] - ETA: 1s - loss: 0.3372 - accuracy: 0.8754
820/1875 [============>.................] - ETA: 1s - loss: 0.3372 - accuracy: 0.8754
852/1875 [============>.................] - ETA: 1s - loss: 0.3372 - accuracy: 0.8754
883/1875 [=============>................] - ETA: 1s - loss: 0.3371 - accuracy: 0.8754
914/1875 [=============>................] - ETA: 1s - loss: 0.3371 - accuracy: 0.8754
945/1875 [==============>...............] - ETA: 1s - loss: 0.3371 - accuracy: 0.8755
976/1875 [==============>...............] - ETA: 1s - loss: 0.3370 - accuracy: 0.8755
1006/1875 [===============>..............] - ETA: 1s - loss: 0.3370 - accuracy: 0.8756
1037/1875 [===============>..............] - ETA: 1s - loss: 0.3369 - accuracy: 0.8756
1068/1875 [================>.............] - ETA: 1s - loss: 0.3369 - accuracy: 0.8757
1099/1875 [================>.............] - ETA: 1s - loss: 0.3368 - accuracy: 0.8757
1130/1875 [=================>............] - ETA: 1s - loss: 0.3367 - accuracy: 0.8758
1161/1875 [=================>............] - ETA: 1s - loss: 0.3366 - accuracy: 0.8758
1192/1875 [==================>...........] - ETA: 1s - loss: 0.3365 - accuracy: 0.8759
1224/1875 [==================>...........] - ETA: 1s - loss: 0.3364 - accuracy: 0.8759
1256/1875 [===================>..........] - ETA: 1s - loss: 0.3363 - accuracy: 0.8760
1287/1875 [===================>..........] - ETA: 0s - loss: 0.3363 - accuracy: 0.8760
1318/1875 [====================>.........] - ETA: 0s - loss: 0.3362 - accuracy: 0.8761
1350/1875 [====================>.........] - ETA: 0s - loss: 0.3361 - accuracy: 0.8761
1382/1875 [=====================>........] - ETA: 0s - loss: 0.3361 - accuracy: 0.8762
1413/1875 [=====================>........] - ETA: 0s - loss: 0.3360 - accuracy: 0.8762
1445/1875 [======================>.......] - ETA: 0s - loss: 0.3360 - accuracy: 0.8762
1476/1875 [======================>.......] - ETA: 0s - loss: 0.3360 - accuracy: 0.8763
1507/1875 [=======================>......] - ETA: 0s - loss: 0.3359 - accuracy: 0.8763
1538/1875 [=======================>......] - ETA: 0s - loss: 0.3359 - accuracy: 0.8763
1569/1875 [========================>.....] - ETA: 0s - loss: 0.3359 - accuracy: 0.8763
1600/1875 [========================>.....] - ETA: 0s - loss: 0.3359 - accuracy: 0.8763
1631/1875 [=========================>....] - ETA: 0s - loss: 0.3359 - accuracy: 0.8763
1662/1875 [=========================>....] - ETA: 0s - loss: 0.3359 - accuracy: 0.8764
1693/1875 [==========================>...] - ETA: 0s - loss: 0.3359 - accuracy: 0.8764
1724/1875 [==========================>...] - ETA: 0s - loss: 0.3359 - accuracy: 0.8764
1756/1875 [===========================>..] - ETA: 0s - loss: 0.3359 - accuracy: 0.8764
1787/1875 [===========================>..] - ETA: 0s - loss: 0.3358 - accuracy: 0.8764
1818/1875 [============================>.] - ETA: 0s - loss: 0.3358 - accuracy: 0.8764
1849/1875 [============================>.] - ETA: 0s - loss: 0.3358 - accuracy: 0.8764
1875/1875 [==============================] - 3s 2ms/step - loss: 0.3358 - accuracy: 0.8765
Epoch 4/10

   1/1875 [..............................] - ETA: 3s - loss: 0.2684 - accuracy: 0.8438
32/1875 [..............................] - ETA: 2s - loss: 0.3027 - accuracy: 0.8808
63/1875 [>.............................] - ETA: 2s - loss: 0.3010 - accuracy: 0.8859
94/1875 [>.............................] - ETA: 2s - loss: 0.3018 - accuracy: 0.8878
125/1875 [=>............................] - ETA: 2s - loss: 0.3015 - accuracy: 0.8883
155/1875 [=>............................] - ETA: 2s - loss: 0.3014 - accuracy: 0.8887
186/1875 [=>............................] - ETA: 2s - loss: 0.3019 - accuracy: 0.8886
218/1875 [==>...........................] - ETA: 2s - loss: 0.3021 - accuracy: 0.8888
249/1875 [==>...........................] - ETA: 2s - loss: 0.3019 - accuracy: 0.8891
280/1875 [===>..........................] - ETA: 2s - loss: 0.3018 - accuracy: 0.8893
311/1875 [===>..........................] - ETA: 2s - loss: 0.3018 - accuracy: 0.8894
341/1875 [====>.........................] - ETA: 2s - loss: 0.3018 - accuracy: 0.8894
372/1875 [====>.........................] - ETA: 2s - loss: 0.3017 - accuracy: 0.8894
403/1875 [=====>........................] - ETA: 2s - loss: 0.3019 - accuracy: 0.8893
434/1875 [=====>........................] - ETA: 2s - loss: 0.3020 - accuracy: 0.8893
465/1875 [======>.......................] - ETA: 2s - loss: 0.3021 - accuracy: 0.8893
497/1875 [======>.......................] - ETA: 2s - loss: 0.3021 - accuracy: 0.8893
529/1875 [=======>......................] - ETA: 2s - loss: 0.3021 - accuracy: 0.8893
560/1875 [=======>......................] - ETA: 2s - loss: 0.3022 - accuracy: 0.8892
591/1875 [========>.....................] - ETA: 2s - loss: 0.3023 - accuracy: 0.8892
622/1875 [========>.....................] - ETA: 2s - loss: 0.3023 - accuracy: 0.8892
653/1875 [=========>....................] - ETA: 1s - loss: 0.3024 - accuracy: 0.8892
685/1875 [=========>....................] - ETA: 1s - loss: 0.3023 - accuracy: 0.8892
717/1875 [==========>...................] - ETA: 1s - loss: 0.3024 - accuracy: 0.8892
749/1875 [==========>...................] - ETA: 1s - loss: 0.3023 - accuracy: 0.8892
781/1875 [===========>..................] - ETA: 1s - loss: 0.3023 - accuracy: 0.8892
813/1875 [============>.................] - ETA: 1s - loss: 0.3023 - accuracy: 0.8892
845/1875 [============>.................] - ETA: 1s - loss: 0.3023 - accuracy: 0.8891
877/1875 [=============>................] - ETA: 1s - loss: 0.3024 - accuracy: 0.8891
908/1875 [=============>................] - ETA: 1s - loss: 0.3024 - accuracy: 0.8891
939/1875 [==============>...............] - ETA: 1s - loss: 0.3025 - accuracy: 0.8891
971/1875 [==============>...............] - ETA: 1s - loss: 0.3026 - accuracy: 0.8891
1003/1875 [===============>..............] - ETA: 1s - loss: 0.3028 - accuracy: 0.8890
1035/1875 [===============>..............] - ETA: 1s - loss: 0.3029 - accuracy: 0.8889
1067/1875 [================>.............] - ETA: 1s - loss: 0.3031 - accuracy: 0.8888
1099/1875 [================>.............] - ETA: 1s - loss: 0.3033 - accuracy: 0.8888
1131/1875 [=================>............] - ETA: 1s - loss: 0.3035 - accuracy: 0.8887
1162/1875 [=================>............] - ETA: 1s - loss: 0.3036 - accuracy: 0.8886
1194/1875 [==================>...........] - ETA: 1s - loss: 0.3037 - accuracy: 0.8886
1225/1875 [==================>...........] - ETA: 1s - loss: 0.3038 - accuracy: 0.8885
1257/1875 [===================>..........] - ETA: 1s - loss: 0.3040 - accuracy: 0.8885
1289/1875 [===================>..........] - ETA: 0s - loss: 0.3041 - accuracy: 0.8885
1321/1875 [====================>.........] - ETA: 0s - loss: 0.3042 - accuracy: 0.8884
1352/1875 [====================>.........] - ETA: 0s - loss: 0.3043 - accuracy: 0.8884
1384/1875 [=====================>........] - ETA: 0s - loss: 0.3044 - accuracy: 0.8883
1417/1875 [=====================>........] - ETA: 0s - loss: 0.3045 - accuracy: 0.8883
1450/1875 [======================>.......] - ETA: 0s - loss: 0.3045 - accuracy: 0.8883
1483/1875 [======================>.......] - ETA: 0s - loss: 0.3046 - accuracy: 0.8883
1515/1875 [=======================>......] - ETA: 0s - loss: 0.3047 - accuracy: 0.8882
1547/1875 [=======================>......] - ETA: 0s - loss: 0.3047 - accuracy: 0.8882
1579/1875 [========================>.....] - ETA: 0s - loss: 0.3048 - accuracy: 0.8882
1611/1875 [========================>.....] - ETA: 0s - loss: 0.3048 - accuracy: 0.8881
1642/1875 [=========================>....] - ETA: 0s - loss: 0.3048 - accuracy: 0.8881
1674/1875 [=========================>....] - ETA: 0s - loss: 0.3049 - accuracy: 0.8881
1706/1875 [==========================>...] - ETA: 0s - loss: 0.3049 - accuracy: 0.8881
1738/1875 [==========================>...] - ETA: 0s - loss: 0.3050 - accuracy: 0.8881
1770/1875 [===========================>..] - ETA: 0s - loss: 0.3050 - accuracy: 0.8880
1802/1875 [===========================>..] - ETA: 0s - loss: 0.3051 - accuracy: 0.8880
1834/1875 [============================>.] - ETA: 0s - loss: 0.3051 - accuracy: 0.8880
1866/1875 [============================>.] - ETA: 0s - loss: 0.3051 - accuracy: 0.8880
1875/1875 [==============================] - 3s 2ms/step - loss: 0.3052 - accuracy: 0.8880
Epoch 5/10

   1/1875 [..............................] - ETA: 2s - loss: 0.1698 - accuracy: 0.9062
34/1875 [..............................] - ETA: 2s - loss: 0.3304 - accuracy: 0.8803
66/1875 [>.............................] - ETA: 2s - loss: 0.3229 - accuracy: 0.8822
97/1875 [>.............................] - ETA: 2s - loss: 0.3184 - accuracy: 0.8824
129/1875 [=>............................] - ETA: 2s - loss: 0.3142 - accuracy: 0.8834
161/1875 [=>............................] - ETA: 2s - loss: 0.3120 - accuracy: 0.8840
193/1875 [==>...........................] - ETA: 2s - loss: 0.3107 - accuracy: 0.8844
224/1875 [==>...........................] - ETA: 2s - loss: 0.3088 - accuracy: 0.8851
256/1875 [===>..........................] - ETA: 2s - loss: 0.3071 - accuracy: 0.8856
288/1875 [===>..........................] - ETA: 2s - loss: 0.3057 - accuracy: 0.8860
320/1875 [====>.........................] - ETA: 2s - loss: 0.3046 - accuracy: 0.8863
352/1875 [====>.........................] - ETA: 2s - loss: 0.3038 - accuracy: 0.8865
384/1875 [=====>........................] - ETA: 2s - loss: 0.3032 - accuracy: 0.8867
416/1875 [=====>........................] - ETA: 2s - loss: 0.3025 - accuracy: 0.8869
448/1875 [======>.......................] - ETA: 2s - loss: 0.3020 - accuracy: 0.8871
480/1875 [======>.......................] - ETA: 2s - loss: 0.3016 - accuracy: 0.8872
512/1875 [=======>......................] - ETA: 2s - loss: 0.3011 - accuracy: 0.8874
544/1875 [=======>......................] - ETA: 2s - loss: 0.3008 - accuracy: 0.8875
576/1875 [========>.....................] - ETA: 2s - loss: 0.3005 - accuracy: 0.8876
608/1875 [========>.....................] - ETA: 2s - loss: 0.3002 - accuracy: 0.8877
639/1875 [=========>....................] - ETA: 1s - loss: 0.3000 - accuracy: 0.8877
670/1875 [=========>....................] - ETA: 1s - loss: 0.2997 - accuracy: 0.8878
701/1875 [==========>...................] - ETA: 1s - loss: 0.2995 - accuracy: 0.8878
733/1875 [==========>...................] - ETA: 1s - loss: 0.2993 - accuracy: 0.8879
764/1875 [===========>..................] - ETA: 1s - loss: 0.2991 - accuracy: 0.8879
795/1875 [===========>..................] - ETA: 1s - loss: 0.2989 - accuracy: 0.8880
828/1875 [============>.................] - ETA: 1s - loss: 0.2987 - accuracy: 0.8881
860/1875 [============>.................] - ETA: 1s - loss: 0.2985 - accuracy: 0.8882
892/1875 [=============>................] - ETA: 1s - loss: 0.2984 - accuracy: 0.8883
924/1875 [=============>................] - ETA: 1s - loss: 0.2983 - accuracy: 0.8884
956/1875 [==============>...............] - ETA: 1s - loss: 0.2981 - accuracy: 0.8884
987/1875 [==============>...............] - ETA: 1s - loss: 0.2980 - accuracy: 0.8885
1019/1875 [===============>..............] - ETA: 1s - loss: 0.2979 - accuracy: 0.8886
1051/1875 [===============>..............] - ETA: 1s - loss: 0.2978 - accuracy: 0.8886
1083/1875 [================>.............] - ETA: 1s - loss: 0.2977 - accuracy: 0.8887
1116/1875 [================>.............] - ETA: 1s - loss: 0.2976 - accuracy: 0.8887
1148/1875 [=================>............] - ETA: 1s - loss: 0.2976 - accuracy: 0.8888
1180/1875 [=================>............] - ETA: 1s - loss: 0.2975 - accuracy: 0.8888
1211/1875 [==================>...........] - ETA: 1s - loss: 0.2975 - accuracy: 0.8889
1243/1875 [==================>...........] - ETA: 1s - loss: 0.2974 - accuracy: 0.8889
1275/1875 [===================>..........] - ETA: 0s - loss: 0.2973 - accuracy: 0.8890
1307/1875 [===================>..........] - ETA: 0s - loss: 0.2972 - accuracy: 0.8890
1339/1875 [====================>.........] - ETA: 0s - loss: 0.2971 - accuracy: 0.8891
1371/1875 [====================>.........] - ETA: 0s - loss: 0.2971 - accuracy: 0.8891
1403/1875 [=====================>........] - ETA: 0s - loss: 0.2970 - accuracy: 0.8892
1435/1875 [=====================>........] - ETA: 0s - loss: 0.2969 - accuracy: 0.8892
1467/1875 [======================>.......] - ETA: 0s - loss: 0.2968 - accuracy: 0.8893
1500/1875 [=======================>......] - ETA: 0s - loss: 0.2967 - accuracy: 0.8893
1532/1875 [=======================>......] - ETA: 0s - loss: 0.2967 - accuracy: 0.8894
1564/1875 [========================>.....] - ETA: 0s - loss: 0.2966 - accuracy: 0.8894
1596/1875 [========================>.....] - ETA: 0s - loss: 0.2965 - accuracy: 0.8894
1628/1875 [=========================>....] - ETA: 0s - loss: 0.2965 - accuracy: 0.8895
1659/1875 [=========================>....] - ETA: 0s - loss: 0.2964 - accuracy: 0.8895
1691/1875 [==========================>...] - ETA: 0s - loss: 0.2964 - accuracy: 0.8895
1723/1875 [==========================>...] - ETA: 0s - loss: 0.2963 - accuracy: 0.8896
1755/1875 [===========================>..] - ETA: 0s - loss: 0.2963 - accuracy: 0.8896
1786/1875 [===========================>..] - ETA: 0s - loss: 0.2962 - accuracy: 0.8896
1818/1875 [============================>.] - ETA: 0s - loss: 0.2962 - accuracy: 0.8897
1850/1875 [============================>.] - ETA: 0s - loss: 0.2961 - accuracy: 0.8897
1875/1875 [==============================] - 3s 2ms/step - loss: 0.2961 - accuracy: 0.8897
Epoch 6/10

   1/1875 [..............................] - ETA: 3s - loss: 0.3966 - accuracy: 0.8438
33/1875 [..............................] - ETA: 2s - loss: 0.2863 - accuracy: 0.8896
65/1875 [>.............................] - ETA: 2s - loss: 0.2754 - accuracy: 0.8962
97/1875 [>.............................] - ETA: 2s - loss: 0.2728 - accuracy: 0.8977
129/1875 [=>............................] - ETA: 2s - loss: 0.2730 - accuracy: 0.8977
161/1875 [=>............................] - ETA: 2s - loss: 0.2741 - accuracy: 0.8975
193/1875 [==>...........................] - ETA: 2s - loss: 0.2750 - accuracy: 0.8977
225/1875 [==>...........................] - ETA: 2s - loss: 0.2757 - accuracy: 0.8977
257/1875 [===>..........................] - ETA: 2s - loss: 0.2761 - accuracy: 0.8975
289/1875 [===>..........................] - ETA: 2s - loss: 0.2763 - accuracy: 0.8973
320/1875 [====>.........................] - ETA: 2s - loss: 0.2763 - accuracy: 0.8972
352/1875 [====>.........................] - ETA: 2s - loss: 0.2761 - accuracy: 0.8972
384/1875 [=====>........................] - ETA: 2s - loss: 0.2761 - accuracy: 0.8972
403/1875 [=====>........................] - ETA: 2s - loss: 0.2761 - accuracy: 0.8972
431/1875 [=====>........................] - ETA: 2s - loss: 0.2763 - accuracy: 0.8971
463/1875 [======>.......................] - ETA: 2s - loss: 0.2767 - accuracy: 0.8969
496/1875 [======>.......................] - ETA: 2s - loss: 0.2770 - accuracy: 0.8968
528/1875 [=======>......................] - ETA: 2s - loss: 0.2772 - accuracy: 0.8966
560/1875 [=======>......................] - ETA: 2s - loss: 0.2773 - accuracy: 0.8965
591/1875 [========>.....................] - ETA: 2s - loss: 0.2775 - accuracy: 0.8965
623/1875 [========>.....................] - ETA: 2s - loss: 0.2776 - accuracy: 0.8964
655/1875 [=========>....................] - ETA: 1s - loss: 0.2778 - accuracy: 0.8963
686/1875 [=========>....................] - ETA: 1s - loss: 0.2779 - accuracy: 0.8962

717/1875 [==========>...................] - ETA: 1s - loss: 0.2779 - accuracy: 0.8962
749/1875 [==========>...................] - ETA: 1s - loss: 0.2779 - accuracy: 0.8962
781/1875 [===========>..................] - ETA: 1s - loss: 0.2779 - accuracy: 0.8962
813/1875 [============>.................] - ETA: 1s - loss: 0.2779 - accuracy: 0.8962
844/1875 [============>.................] - ETA: 1s - loss: 0.2779 - accuracy: 0.8962
876/1875 [=============>................] - ETA: 1s - loss: 0.2778 - accuracy: 0.8963
908/1875 [=============>................] - ETA: 1s - loss: 0.2777 - accuracy: 0.8963
939/1875 [==============>...............] - ETA: 1s - loss: 0.2776 - accuracy: 0.8964
971/1875 [==============>...............] - ETA: 1s - loss: 0.2775 - accuracy: 0.8965
1003/1875 [===============>..............] - ETA: 1s - loss: 0.2774 - accuracy: 0.8965
1035/1875 [===============>..............] - ETA: 1s - loss: 0.2774 - accuracy: 0.8966
1067/1875 [================>.............] - ETA: 1s - loss: 0.2773 - accuracy: 0.8967
1098/1875 [================>.............] - ETA: 1s - loss: 0.2773 - accuracy: 0.8967
1129/1875 [=================>............] - ETA: 1s - loss: 0.2773 - accuracy: 0.8968
1161/1875 [=================>............] - ETA: 1s - loss: 0.2773 - accuracy: 0.8968
1193/1875 [==================>...........] - ETA: 1s - loss: 0.2773 - accuracy: 0.8968
1224/1875 [==================>...........] - ETA: 1s - loss: 0.2773 - accuracy: 0.8969
1256/1875 [===================>..........] - ETA: 1s - loss: 0.2773 - accuracy: 0.8969
1287/1875 [===================>..........] - ETA: 0s - loss: 0.2773 - accuracy: 0.8970
1319/1875 [====================>.........] - ETA: 0s - loss: 0.2774 - accuracy: 0.8970
1350/1875 [====================>.........] - ETA: 0s - loss: 0.2774 - accuracy: 0.8970
1381/1875 [=====================>........] - ETA: 0s - loss: 0.2774 - accuracy: 0.8971
1413/1875 [=====================>........] - ETA: 0s - loss: 0.2774 - accuracy: 0.8971
1445/1875 [======================>.......] - ETA: 0s - loss: 0.2774 - accuracy: 0.8971
1476/1875 [======================>.......] - ETA: 0s - loss: 0.2774 - accuracy: 0.8971
1508/1875 [=======================>......] - ETA: 0s - loss: 0.2774 - accuracy: 0.8971
1540/1875 [=======================>......] - ETA: 0s - loss: 0.2774 - accuracy: 0.8971
1571/1875 [========================>.....] - ETA: 0s - loss: 0.2774 - accuracy: 0.8972
1603/1875 [========================>.....] - ETA: 0s - loss: 0.2774 - accuracy: 0.8972
1635/1875 [=========================>....] - ETA: 0s - loss: 0.2774 - accuracy: 0.8972
1667/1875 [=========================>....] - ETA: 0s - loss: 0.2774 - accuracy: 0.8972
1699/1875 [==========================>...] - ETA: 0s - loss: 0.2775 - accuracy: 0.8972
1730/1875 [==========================>...] - ETA: 0s - loss: 0.2775 - accuracy: 0.8972
1761/1875 [===========================>..] - ETA: 0s - loss: 0.2775 - accuracy: 0.8972
1793/1875 [===========================>..] - ETA: 0s - loss: 0.2775 - accuracy: 0.8972
1824/1875 [============================>.] - ETA: 0s - loss: 0.2775 - accuracy: 0.8972
1855/1875 [============================>.] - ETA: 0s - loss: 0.2775 - accuracy: 0.8972
1875/1875 [==============================] - 3s 2ms/step - loss: 0.2775 - accuracy: 0.8972
Epoch 7/10

   1/1875 [..............................] - ETA: 3s - loss: 0.2796 - accuracy: 0.9062
33/1875 [..............................] - ETA: 2s - loss: 0.2602 - accuracy: 0.8999
65/1875 [>.............................] - ETA: 2s - loss: 0.2648 - accuracy: 0.8980
97/1875 [>.............................] - ETA: 2s - loss: 0.2645 - accuracy: 0.8991
128/1875 [=>............................] - ETA: 2s - loss: 0.2638 - accuracy: 0.9000
160/1875 [=>............................] - ETA: 2s - loss: 0.2640 - accuracy: 0.9001
191/1875 [==>...........................] - ETA: 2s - loss: 0.2647 - accuracy: 0.8999
223/1875 [==>...........................] - ETA: 2s - loss: 0.2648 - accuracy: 0.9000
254/1875 [===>..........................] - ETA: 2s - loss: 0.2652 - accuracy: 0.8999
285/1875 [===>..........................] - ETA: 2s - loss: 0.2658 - accuracy: 0.8998
316/1875 [====>.........................] - ETA: 2s - loss: 0.2664 - accuracy: 0.8997
347/1875 [====>.........................] - ETA: 2s - loss: 0.2668 - accuracy: 0.8996
378/1875 [=====>........................] - ETA: 2s - loss: 0.2670 - accuracy: 0.8995
410/1875 [=====>........................] - ETA: 2s - loss: 0.2673 - accuracy: 0.8995
442/1875 [======>.......................] - ETA: 2s - loss: 0.2675 - accuracy: 0.8994
474/1875 [======>.......................] - ETA: 2s - loss: 0.2678 - accuracy: 0.8993
504/1875 [=======>......................] - ETA: 2s - loss: 0.2680 - accuracy: 0.8993
535/1875 [=======>......................] - ETA: 2s - loss: 0.2681 - accuracy: 0.8993
567/1875 [========>.....................] - ETA: 2s - loss: 0.2682 - accuracy: 0.8993
599/1875 [========>.....................] - ETA: 2s - loss: 0.2681 - accuracy: 0.8993
631/1875 [=========>....................] - ETA: 2s - loss: 0.2681 - accuracy: 0.8993
662/1875 [=========>....................] - ETA: 1s - loss: 0.2680 - accuracy: 0.8994
694/1875 [==========>...................] - ETA: 1s - loss: 0.2680 - accuracy: 0.8994
726/1875 [==========>...................] - ETA: 1s - loss: 0.2679 - accuracy: 0.8995
758/1875 [===========>..................] - ETA: 1s - loss: 0.2679 - accuracy: 0.8995
789/1875 [===========>..................] - ETA: 1s - loss: 0.2678 - accuracy: 0.8996
821/1875 [============>.................] - ETA: 1s - loss: 0.2677 - accuracy: 0.8997
853/1875 [============>.................] - ETA: 1s - loss: 0.2676 - accuracy: 0.8997
885/1875 [=============>................] - ETA: 1s - loss: 0.2676 - accuracy: 0.8998
916/1875 [=============>................] - ETA: 1s - loss: 0.2675 - accuracy: 0.8999
948/1875 [==============>...............] - ETA: 1s - loss: 0.2674 - accuracy: 0.9000
979/1875 [==============>...............] - ETA: 1s - loss: 0.2674 - accuracy: 0.9000
1011/1875 [===============>..............] - ETA: 1s - loss: 0.2673 - accuracy: 0.9001
1042/1875 [===============>..............] - ETA: 1s - loss: 0.2672 - accuracy: 0.9002
1074/1875 [================>.............] - ETA: 1s - loss: 0.2672 - accuracy: 0.9003
1106/1875 [================>.............] - ETA: 1s - loss: 0.2671 - accuracy: 0.9003
1137/1875 [=================>............] - ETA: 1s - loss: 0.2670 - accuracy: 0.9004
1167/1875 [=================>............] - ETA: 1s - loss: 0.2669 - accuracy: 0.9004
1198/1875 [==================>...........] - ETA: 1s - loss: 0.2669 - accuracy: 0.9005
1229/1875 [==================>...........] - ETA: 1s - loss: 0.2668 - accuracy: 0.9005
1260/1875 [===================>..........] - ETA: 0s - loss: 0.2668 - accuracy: 0.9006
1290/1875 [===================>..........] - ETA: 0s - loss: 0.2667 - accuracy: 0.9006
1321/1875 [====================>.........] - ETA: 0s - loss: 0.2667 - accuracy: 0.9006
1351/1875 [====================>.........] - ETA: 0s - loss: 0.2667 - accuracy: 0.9007
1381/1875 [=====================>........] - ETA: 0s - loss: 0.2667 - accuracy: 0.9007
1409/1875 [=====================>........] - ETA: 0s - loss: 0.2666 - accuracy: 0.9007
1439/1875 [======================>.......] - ETA: 0s - loss: 0.2666 - accuracy: 0.9008
1470/1875 [======================>.......] - ETA: 0s - loss: 0.2666 - accuracy: 0.9008
1501/1875 [=======================>......] - ETA: 0s - loss: 0.2666 - accuracy: 0.9008
1532/1875 [=======================>......] - ETA: 0s - loss: 0.2666 - accuracy: 0.9008
1562/1875 [=======================>......] - ETA: 0s - loss: 0.2666 - accuracy: 0.9008
1594/1875 [========================>.....] - ETA: 0s - loss: 0.2666 - accuracy: 0.9009
1626/1875 [=========================>....] - ETA: 0s - loss: 0.2666 - accuracy: 0.9009
1657/1875 [=========================>....] - ETA: 0s - loss: 0.2666 - accuracy: 0.9009
1688/1875 [==========================>...] - ETA: 0s - loss: 0.2666 - accuracy: 0.9009
1719/1875 [==========================>...] - ETA: 0s - loss: 0.2666 - accuracy: 0.9009
1751/1875 [===========================>..] - ETA: 0s - loss: 0.2666 - accuracy: 0.9009
1783/1875 [===========================>..] - ETA: 0s - loss: 0.2666 - accuracy: 0.9009
1815/1875 [============================>.] - ETA: 0s - loss: 0.2666 - accuracy: 0.9010
1846/1875 [============================>.] - ETA: 0s - loss: 0.2666 - accuracy: 0.9010
1875/1875 [==============================] - 3s 2ms/step - loss: 0.2666 - accuracy: 0.9010
Epoch 8/10

   1/1875 [..............................] - ETA: 2s - loss: 0.1556 - accuracy: 0.9062
33/1875 [..............................] - ETA: 2s - loss: 0.2361 - accuracy: 0.9182
64/1875 [>.............................] - ETA: 2s - loss: 0.2586 - accuracy: 0.9069
95/1875 [>.............................] - ETA: 2s - loss: 0.2687 - accuracy: 0.9025
127/1875 [=>............................] - ETA: 2s - loss: 0.2717 - accuracy: 0.9011
159/1875 [=>............................] - ETA: 2s - loss: 0.2711 - accuracy: 0.9011
190/1875 [==>...........................] - ETA: 2s - loss: 0.2704 - accuracy: 0.9009
221/1875 [==>...........................] - ETA: 2s - loss: 0.2695 - accuracy: 0.9009
252/1875 [===>..........................] - ETA: 2s - loss: 0.2684 - accuracy: 0.9010
284/1875 [===>..........................] - ETA: 2s - loss: 0.2675 - accuracy: 0.9012
315/1875 [====>.........................] - ETA: 2s - loss: 0.2670 - accuracy: 0.9014
346/1875 [====>.........................] - ETA: 2s - loss: 0.2667 - accuracy: 0.9014
377/1875 [=====>........................] - ETA: 2s - loss: 0.2662 - accuracy: 0.9016
408/1875 [=====>........................] - ETA: 2s - loss: 0.2658 - accuracy: 0.9018
439/1875 [======>.......................] - ETA: 2s - loss: 0.2653 - accuracy: 0.9019
469/1875 [======>.......................] - ETA: 2s - loss: 0.2649 - accuracy: 0.9021
500/1875 [=======>......................] - ETA: 2s - loss: 0.2646 - accuracy: 0.9023
531/1875 [=======>......................] - ETA: 2s - loss: 0.2643 - accuracy: 0.9024
563/1875 [========>.....................] - ETA: 2s - loss: 0.2641 - accuracy: 0.9026
594/1875 [========>.....................] - ETA: 2s - loss: 0.2637 - accuracy: 0.9027
626/1875 [=========>....................] - ETA: 2s - loss: 0.2634 - accuracy: 0.9029
658/1875 [=========>....................] - ETA: 1s - loss: 0.2630 - accuracy: 0.9030
689/1875 [==========>...................] - ETA: 1s - loss: 0.2627 - accuracy: 0.9031
720/1875 [==========>...................] - ETA: 1s - loss: 0.2625 - accuracy: 0.9032
751/1875 [===========>..................] - ETA: 1s - loss: 0.2623 - accuracy: 0.9033
783/1875 [===========>..................] - ETA: 1s - loss: 0.2621 - accuracy: 0.9034
815/1875 [============>.................] - ETA: 1s - loss: 0.2619 - accuracy: 0.9034
846/1875 [============>.................] - ETA: 1s - loss: 0.2617 - accuracy: 0.9035
877/1875 [=============>................] - ETA: 1s - loss: 0.2615 - accuracy: 0.9036
909/1875 [=============>................] - ETA: 1s - loss: 0.2613 - accuracy: 0.9037
940/1875 [==============>...............] - ETA: 1s - loss: 0.2612 - accuracy: 0.9037
971/1875 [==============>...............] - ETA: 1s - loss: 0.2611 - accuracy: 0.9038
1002/1875 [===============>..............] - ETA: 1s - loss: 0.2609 - accuracy: 0.9038
1034/1875 [===============>..............] - ETA: 1s - loss: 0.2608 - accuracy: 0.9039
1066/1875 [================>.............] - ETA: 1s - loss: 0.2607 - accuracy: 0.9040
1095/1875 [================>.............] - ETA: 1s - loss: 0.2606 - accuracy: 0.9040
1126/1875 [=================>............] - ETA: 1s - loss: 0.2605 - accuracy: 0.9041
1158/1875 [=================>............] - ETA: 1s - loss: 0.2604 - accuracy: 0.9041
1189/1875 [==================>...........] - ETA: 1s - loss: 0.2603 - accuracy: 0.9042
1219/1875 [==================>...........] - ETA: 1s - loss: 0.2602 - accuracy: 0.9042
1250/1875 [===================>..........] - ETA: 1s - loss: 0.2601 - accuracy: 0.9043
1281/1875 [===================>..........] - ETA: 0s - loss: 0.2600 - accuracy: 0.9043
1312/1875 [===================>..........] - ETA: 0s - loss: 0.2599 - accuracy: 0.9043
1343/1875 [====================>.........] - ETA: 0s - loss: 0.2599 - accuracy: 0.9044
1374/1875 [====================>.........] - ETA: 0s - loss: 0.2598 - accuracy: 0.9044
1406/1875 [=====================>........] - ETA: 0s - loss: 0.2598 - accuracy: 0.9044
1437/1875 [=====================>........] - ETA: 0s - loss: 0.2597 - accuracy: 0.9045
1468/1875 [======================>.......] - ETA: 0s - loss: 0.2597 - accuracy: 0.9045
1499/1875 [======================>.......] - ETA: 0s - loss: 0.2597 - accuracy: 0.9045
1531/1875 [=======================>......] - ETA: 0s - loss: 0.2596 - accuracy: 0.9045
1563/1875 [========================>.....] - ETA: 0s - loss: 0.2596 - accuracy: 0.9045
1594/1875 [========================>.....] - ETA: 0s - loss: 0.2596 - accuracy: 0.9045
1625/1875 [=========================>....] - ETA: 0s - loss: 0.2596 - accuracy: 0.9045
1657/1875 [=========================>....] - ETA: 0s - loss: 0.2595 - accuracy: 0.9045
1689/1875 [==========================>...] - ETA: 0s - loss: 0.2595 - accuracy: 0.9046
1721/1875 [==========================>...] - ETA: 0s - loss: 0.2595 - accuracy: 0.9046
1751/1875 [===========================>..] - ETA: 0s - loss: 0.2594 - accuracy: 0.9046
1782/1875 [===========================>..] - ETA: 0s - loss: 0.2594 - accuracy: 0.9046
1813/1875 [============================>.] - ETA: 0s - loss: 0.2594 - accuracy: 0.9046
1845/1875 [============================>.] - ETA: 0s - loss: 0.2593 - accuracy: 0.9046
1875/1875 [==============================] - 3s 2ms/step - loss: 0.2593 - accuracy: 0.9046
Epoch 9/10

   1/1875 [..............................] - ETA: 3s - loss: 0.1538 - accuracy: 0.9375
32/1875 [..............................] - ETA: 2s - loss: 0.2648 - accuracy: 0.9035
63/1875 [>.............................] - ETA: 2s - loss: 0.2624 - accuracy: 0.9075
94/1875 [>.............................] - ETA: 2s - loss: 0.2591 - accuracy: 0.9088
125/1875 [=>............................] - ETA: 2s - loss: 0.2550 - accuracy: 0.9102
157/1875 [=>............................] - ETA: 2s - loss: 0.2513 - accuracy: 0.9110
189/1875 [==>...........................] - ETA: 2s - loss: 0.2477 - accuracy: 0.9119
219/1875 [==>...........................] - ETA: 2s - loss: 0.2453 - accuracy: 0.9123
250/1875 [===>..........................] - ETA: 2s - loss: 0.2430 - accuracy: 0.9128
282/1875 [===>..........................] - ETA: 2s - loss: 0.2412 - accuracy: 0.9133
314/1875 [====>.........................] - ETA: 2s - loss: 0.2403 - accuracy: 0.9134
346/1875 [====>.........................] - ETA: 2s - loss: 0.2399 - accuracy: 0.9134
377/1875 [=====>........................] - ETA: 2s - loss: 0.2396 - accuracy: 0.9133
409/1875 [=====>........................] - ETA: 2s - loss: 0.2392 - accuracy: 0.9133
440/1875 [======>.......................] - ETA: 2s - loss: 0.2389 - accuracy: 0.9133
472/1875 [======>.......................] - ETA: 2s - loss: 0.2386 - accuracy: 0.9132
503/1875 [=======>......................] - ETA: 2s - loss: 0.2384 - accuracy: 0.9132
534/1875 [=======>......................] - ETA: 2s - loss: 0.2382 - accuracy: 0.9131
566/1875 [========>.....................] - ETA: 2s - loss: 0.2381 - accuracy: 0.9131
598/1875 [========>.....................] - ETA: 2s - loss: 0.2379 - accuracy: 0.9130
629/1875 [=========>....................] - ETA: 2s - loss: 0.2379 - accuracy: 0.9129
661/1875 [=========>....................] - ETA: 1s - loss: 0.2378 - accuracy: 0.9129
694/1875 [==========>...................] - ETA: 1s - loss: 0.2377 - accuracy: 0.9128
726/1875 [==========>...................] - ETA: 1s - loss: 0.2377 - accuracy: 0.9127
757/1875 [===========>..................] - ETA: 1s - loss: 0.2378 - accuracy: 0.9127
789/1875 [===========>..................] - ETA: 1s - loss: 0.2379 - accuracy: 0.9126
821/1875 [============>.................] - ETA: 1s - loss: 0.2380 - accuracy: 0.9124
852/1875 [============>.................] - ETA: 1s - loss: 0.2382 - accuracy: 0.9123
884/1875 [=============>................] - ETA: 1s - loss: 0.2383 - accuracy: 0.9122
915/1875 [=============>................] - ETA: 1s - loss: 0.2385 - accuracy: 0.9122
947/1875 [==============>...............] - ETA: 1s - loss: 0.2386 - accuracy: 0.9121
979/1875 [==============>...............] - ETA: 1s - loss: 0.2387 - accuracy: 0.9120
1011/1875 [===============>..............] - ETA: 1s - loss: 0.2388 - accuracy: 0.9119
1041/1875 [===============>..............] - ETA: 1s - loss: 0.2389 - accuracy: 0.9119
1073/1875 [================>.............] - ETA: 1s - loss: 0.2390 - accuracy: 0.9118
1105/1875 [================>.............] - ETA: 1s - loss: 0.2392 - accuracy: 0.9117
1135/1875 [=================>............] - ETA: 1s - loss: 0.2393 - accuracy: 0.9116
1166/1875 [=================>............] - ETA: 1s - loss: 0.2394 - accuracy: 0.9115
1198/1875 [==================>...........] - ETA: 1s - loss: 0.2395 - accuracy: 0.9115
1230/1875 [==================>...........] - ETA: 1s - loss: 0.2397 - accuracy: 0.9114
1261/1875 [===================>..........] - ETA: 0s - loss: 0.2398 - accuracy: 0.9113
1292/1875 [===================>..........] - ETA: 0s - loss: 0.2399 - accuracy: 0.9112
1324/1875 [====================>.........] - ETA: 0s - loss: 0.2400 - accuracy: 0.9112
1355/1875 [====================>.........] - ETA: 0s - loss: 0.2401 - accuracy: 0.9111
1387/1875 [=====================>........] - ETA: 0s - loss: 0.2402 - accuracy: 0.9110
1418/1875 [=====================>........] - ETA: 0s - loss: 0.2403 - accuracy: 0.9109
1449/1875 [======================>.......] - ETA: 0s - loss: 0.2405 - accuracy: 0.9109
1480/1875 [======================>.......] - ETA: 0s - loss: 0.2406 - accuracy: 0.9108
1511/1875 [=======================>......] - ETA: 0s - loss: 0.2407 - accuracy: 0.9107
1542/1875 [=======================>......] - ETA: 0s - loss: 0.2407 - accuracy: 0.9107
1574/1875 [========================>.....] - ETA: 0s - loss: 0.2408 - accuracy: 0.9106
1606/1875 [========================>.....] - ETA: 0s - loss: 0.2409 - accuracy: 0.9106
1637/1875 [=========================>....] - ETA: 0s - loss: 0.2411 - accuracy: 0.9105
1668/1875 [=========================>....] - ETA: 0s - loss: 0.2412 - accuracy: 0.9105
1700/1875 [==========================>...] - ETA: 0s - loss: 0.2413 - accuracy: 0.9104
1731/1875 [==========================>...] - ETA: 0s - loss: 0.2414 - accuracy: 0.9104
1763/1875 [===========================>..] - ETA: 0s - loss: 0.2415 - accuracy: 0.9103
1794/1875 [===========================>..] - ETA: 0s - loss: 0.2416 - accuracy: 0.9102
1825/1875 [============================>.] - ETA: 0s - loss: 0.2417 - accuracy: 0.9102
1857/1875 [============================>.] - ETA: 0s - loss: 0.2418 - accuracy: 0.9102
1875/1875 [==============================] - 3s 2ms/step - loss: 0.2418 - accuracy: 0.9101
Epoch 10/10

   1/1875 [..............................] - ETA: 3s - loss: 0.1037 - accuracy: 0.9688
33/1875 [..............................] - ETA: 2s - loss: 0.2379 - accuracy: 0.9110
64/1875 [>.............................] - ETA: 2s - loss: 0.2403 - accuracy: 0.9098
95/1875 [>.............................] - ETA: 2s - loss: 0.2360 - accuracy: 0.9110
127/1875 [=>............................] - ETA: 2s - loss: 0.2335 - accuracy: 0.9117
158/1875 [=>............................] - ETA: 2s - loss: 0.2335 - accuracy: 0.9115
190/1875 [==>...........................] - ETA: 2s - loss: 0.2332 - accuracy: 0.9115
222/1875 [==>...........................] - ETA: 2s - loss: 0.2324 - accuracy: 0.9117
252/1875 [===>..........................] - ETA: 2s - loss: 0.2320 - accuracy: 0.9120
282/1875 [===>..........................] - ETA: 2s - loss: 0.2317 - accuracy: 0.9120
313/1875 [====>.........................] - ETA: 2s - loss: 0.2315 - accuracy: 0.9121
344/1875 [====>.........................] - ETA: 2s - loss: 0.2313 - accuracy: 0.9123
375/1875 [=====>........................] - ETA: 2s - loss: 0.2314 - accuracy: 0.9124
405/1875 [=====>........................] - ETA: 2s - loss: 0.2316 - accuracy: 0.9125
437/1875 [=====>........................] - ETA: 2s - loss: 0.2316 - accuracy: 0.9127
467/1875 [======>.......................] - ETA: 2s - loss: 0.2316 - accuracy: 0.9128
497/1875 [======>.......................] - ETA: 2s - loss: 0.2316 - accuracy: 0.9129
527/1875 [=======>......................] - ETA: 2s - loss: 0.2315 - accuracy: 0.9130
558/1875 [=======>......................] - ETA: 2s - loss: 0.2316 - accuracy: 0.9130
589/1875 [========>.....................] - ETA: 2s - loss: 0.2316 - accuracy: 0.9131
620/1875 [========>.....................] - ETA: 2s - loss: 0.2317 - accuracy: 0.9131
651/1875 [=========>....................] - ETA: 2s - loss: 0.2317 - accuracy: 0.9132
682/1875 [=========>....................] - ETA: 1s - loss: 0.2317 - accuracy: 0.9132
712/1875 [==========>...................] - ETA: 1s - loss: 0.2318 - accuracy: 0.9132
744/1875 [==========>...................] - ETA: 1s - loss: 0.2318 - accuracy: 0.9132
775/1875 [===========>..................] - ETA: 1s - loss: 0.2319 - accuracy: 0.9132
805/1875 [===========>..................] - ETA: 1s - loss: 0.2319 - accuracy: 0.9132
836/1875 [============>.................] - ETA: 1s - loss: 0.2320 - accuracy: 0.9132
868/1875 [============>.................] - ETA: 1s - loss: 0.2321 - accuracy: 0.9132
900/1875 [=============>................] - ETA: 1s - loss: 0.2321 - accuracy: 0.9132
930/1875 [=============>................] - ETA: 1s - loss: 0.2322 - accuracy: 0.9131
961/1875 [==============>...............] - ETA: 1s - loss: 0.2323 - accuracy: 0.9131
993/1875 [==============>...............] - ETA: 1s - loss: 0.2324 - accuracy: 0.9131
1024/1875 [===============>..............] - ETA: 1s - loss: 0.2325 - accuracy: 0.9131
1055/1875 [===============>..............] - ETA: 1s - loss: 0.2326 - accuracy: 0.9130
1086/1875 [================>.............] - ETA: 1s - loss: 0.2327 - accuracy: 0.9130
1117/1875 [================>.............] - ETA: 1s - loss: 0.2328 - accuracy: 0.9130
1148/1875 [=================>............] - ETA: 1s - loss: 0.2329 - accuracy: 0.9129
1179/1875 [=================>............] - ETA: 1s - loss: 0.2330 - accuracy: 0.9129
1210/1875 [==================>...........] - ETA: 1s - loss: 0.2331 - accuracy: 0.9129
1242/1875 [==================>...........] - ETA: 1s - loss: 0.2332 - accuracy: 0.9128
1273/1875 [===================>..........] - ETA: 0s - loss: 0.2334 - accuracy: 0.9128
1305/1875 [===================>..........] - ETA: 0s - loss: 0.2335 - accuracy: 0.9128
1337/1875 [====================>.........] - ETA: 0s - loss: 0.2336 - accuracy: 0.9127
1369/1875 [====================>.........] - ETA: 0s - loss: 0.2337 - accuracy: 0.9127
1400/1875 [=====================>........] - ETA: 0s - loss: 0.2337 - accuracy: 0.9127
1432/1875 [=====================>........] - ETA: 0s - loss: 0.2338 - accuracy: 0.9127
1463/1875 [======================>.......] - ETA: 0s - loss: 0.2339 - accuracy: 0.9127
1495/1875 [======================>.......] - ETA: 0s - loss: 0.2339 - accuracy: 0.9126
1526/1875 [=======================>......] - ETA: 0s - loss: 0.2340 - accuracy: 0.9126
1558/1875 [=======================>......] - ETA: 0s - loss: 0.2341 - accuracy: 0.9126
1588/1875 [========================>.....] - ETA: 0s - loss: 0.2341 - accuracy: 0.9126
1620/1875 [========================>.....] - ETA: 0s - loss: 0.2342 - accuracy: 0.9126
1651/1875 [=========================>....] - ETA: 0s - loss: 0.2342 - accuracy: 0.9125
1682/1875 [=========================>....] - ETA: 0s - loss: 0.2343 - accuracy: 0.9125
1714/1875 [==========================>...] - ETA: 0s - loss: 0.2344 - accuracy: 0.9125
1746/1875 [==========================>...] - ETA: 0s - loss: 0.2344 - accuracy: 0.9125
1777/1875 [===========================>..] - ETA: 0s - loss: 0.2345 - accuracy: 0.9124
1808/1875 [===========================>..] - ETA: 0s - loss: 0.2345 - accuracy: 0.9124
1839/1875 [============================>.] - ETA: 0s - loss: 0.2346 - accuracy: 0.9124
1871/1875 [============================>.] - ETA: 0s - loss: 0.2347 - accuracy: 0.9124
1875/1875 [==============================] - 3s 2ms/step - loss: 0.2347 - accuracy: 0.9124
<tensorflow.python.keras.callbacks.History at 0x7ff238ad37b8>

À medida que o modelo treina, as métricas loss e acurácia são mostradas. O modelo atinge uma acurácia de 0.88 (ou 88%) com o conjunto de treinamento.

Avalie a acurácia

Depois, compare como o modelo performou com o conjunto de teste:

test_loss, test_acc = model.evaluate(test_images,  test_labels, verbose=2)

print('\nTest accuracy:', test_acc)
313/313 - 1s - loss: 0.3342 - accuracy: 0.8823
Test accuracy: 0.8823000192642212

Acabou que o a acurácia com o conjunto de teste é um pouco menor do que a acurácia de treinamento. Essa diferença entre as duas acurácias representa um overfitting. Overfitting é modelo de aprendizado de máquina performou de maneira pior em um conjunto de entradas novas, e não usadas anteriormente, que usando o conjunto de treinamento.

Faça predições

Com o modelo treinado, o usaremos para predições de algumas imagens.

predictions = model.predict(test_images)

Aqui, o modelo previu que a label de cada imagem no conjunto de treinamento. Vamos olhar na primeira predição:

predictions[0]
array([3.2807145e-07, 1.0875438e-09, 4.7872772e-10, 1.3293636e-10,
       4.8750839e-09, 6.3827081e-04, 1.3278054e-04, 2.0520254e-03,
       3.5905177e-08, 9.9717653e-01], dtype=float32)

A predição é um array de 10 números. Eles representam um a confiança do modelo que a imagem corresponde a cada um dos diferentes artigos de roupa. Podemos ver cada label tem um maior valor de confiança:

np.argmax(predictions[0])
9

Então, o modelo é confiante de que esse imagem é uma bota (ankle boot) ou class_names[9]. Examinando a label do teste, vemos que essa classificação é correta:

test_labels[0]
9

Podemos mostrar graficamente como se parece em um conjunto total de previsão de 10 classes.

def plot_image(i, predictions_array, true_label, img):
  predictions_array, true_label, img = predictions_array[i], true_label[i], img[i]
  plt.grid(False)
  plt.xticks([])
  plt.yticks([])

  plt.imshow(img, cmap=plt.cm.binary)

  predicted_label = np.argmax(predictions_array)
  if predicted_label == true_label:
    color = 'blue'
  else:
    color = 'red'

  plt.xlabel("{} {:2.0f}% ({})".format(class_names[predicted_label],
                                100*np.max(predictions_array),
                                class_names[true_label]),
                                color=color)

def plot_value_array(i, predictions_array, true_label):
  predictions_array, true_label = predictions_array[i], true_label[i]
  plt.grid(False)
  plt.xticks([])
  plt.yticks([])
  thisplot = plt.bar(range(10), predictions_array, color="#777777")
  plt.ylim([0, 1])
  predicted_label = np.argmax(predictions_array)

  thisplot[predicted_label].set_color('red')
  thisplot[true_label].set_color('blue')

Vamos olhar a previsão imagem na posição 0, do array de predição.

i = 0
plt.figure(figsize=(6,3))
plt.subplot(1,2,1)
plot_image(i, predictions, test_labels, test_images)
plt.subplot(1,2,2)
plot_value_array(i, predictions,  test_labels)
plt.show()

png

i = 12
plt.figure(figsize=(6,3))
plt.subplot(1,2,1)
plot_image(i, predictions, test_labels, test_images)
plt.subplot(1,2,2)
plot_value_array(i, predictions,  test_labels)
plt.show()

png

Vamos plotar algumas da previsão do modelo. Labels preditas corretamente são azuis e as predições erradas são vermelhas. O número dá a porcentagem (de 100) das labels preditas. Note que o modelo pode errar mesmo estando confiante.

# Plota o primeiro X test images, e as labels preditas, e as labels verdadeiras.
# Colore as predições corretas de azul e as incorretas de vermelho.
num_rows = 5
num_cols = 3
num_images = num_rows*num_cols
plt.figure(figsize=(2*2*num_cols, 2*num_rows))
for i in range(num_images):
  plt.subplot(num_rows, 2*num_cols, 2*i+1)
  plot_image(i, predictions, test_labels, test_images)
  plt.subplot(num_rows, 2*num_cols, 2*i+2)
  plot_value_array(i, predictions, test_labels)
plt.show()

png

Finamente, use o modelo treinado para fazer a predição de uma única imagem.

# Grab an image from the test dataset.
img = test_images[0]

print(img.shape)
(28, 28)

Modelos tf.keras são otimizados para fazer predições em um batch, ou coleções, de exemplos de uma vez. De acordo, mesmo que usemos uma única imagem, precisamos adicionar em uma lista:

# Adiciona a imagem em um batch que possui um só membro.
img = (np.expand_dims(img,0))

print(img.shape)
(1, 28, 28)

Agora prediremos a label correta para essa imagem:

predictions_single = model.predict(img)

print(predictions_single)
[[3.2807174e-07 1.0875438e-09 4.7872772e-10 1.3293584e-10 4.8750932e-09
  6.3827110e-04 1.3278067e-04 2.0520263e-03 3.5905177e-08 9.9717653e-01]]
plot_value_array(0, predictions_single, test_labels)
_ = plt.xticks(range(10), class_names, rotation=45)

png

model.predict retorna a lista de listas — uma lista para cada imagem em um batch de dados. Pegue a predição de nossa (única) imagem no batch:

np.argmax(predictions_single[0])
9

E, como antes, o modelo previu a label como 9.

# MIT License
#
# Copyright (c) 2017 François Chollet
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.