View on TensorFlow.org
|
Run in Google Colab
|
View source on GitHub
|
Download notebook
|
Esta Guia entrena un modelo de red neuronal para clasificar imagenes de ropa como, tennis y camisetas. No hay problema sino entiende todos los detalles; es un repaso rapido de un programa completo de Tensorflow con los detalles explicados a medida que avanza.
Esta Guia usa tf.keras, un API de alto nivel para construir y entrenar modelos en Tensorflow.
# TensorFlow y tf.keras
import tensorflow as tf
from tensorflow import keras
# Librerias de ayuda
import numpy as np
import matplotlib.pyplot as plt
print(tf.__version__)
2.3.0
Importar el set de datos de moda de MNIST
Esta guia usa el set de datos de Fashion MNIST que contiene mas de 70,000 imagenes en 10 categorias. Las imagenes muestran articulos individuales de ropa a una resolucion baja (28 por 28 pixeles) como se ve aca:
|
|
|
Figure 1. Fashion-MNIST samples (by Zalando, MIT License). |
Moda MNIST esta construida como un reemplazo para el set de datos clasico MNIST casi siempre utilizado como el "Hola Mundo" de programas de aprendizaje automatico (ML) para computo de vision. El set de datos de MNIST contiene imagenes de digitos escrito a mano (0, 1, 2, etc.) en un formato identico al de los articulos de ropa que va a utilizar aca.
Esta guia utiliza Moda MNIST para variedad y por que es un poco mas retador que la regular MNIST. Ambos set de datos son relativamente pequenos y son usados para verificar que el algoritmo funciona como debe.
Aca, 60,000 imagenes son usadas para entrenar la red neuronal y 10,000 imagenes son usadas para evaluar que tan exacto aprendia la red a clasificar imagenes. Pueden acceder al set de moda de MNIST directamente desde TensorFlow. Para importar y cargar el set de datos de MNIST directamente de 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
4202496/26421880 [===>..........................] - ETA: 0s
8396800/26421880 [========>.....................] - ETA: 0s
13443072/26421880 [==============>...............] - ETA: 0s
16785408/26421880 [==================>...........] - ETA: 0s
21520384/26421880 [=======================>......] - ETA: 0s
25174016/26421880 [===========================>..] - ETA: 0s
26427392/26421880 [==============================] - 1s 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
link textAl cargar el set de datos retorna cuatro arreglos en NumPy:
- El arreglo
train_imagesytrain_labelsson los arreglos que training set—el modelo de datos usa para aprender. - el modelo es probado contra los arreglos test set, el
test_images, ytest_labels.
Las imagenes son 28x28 arreglos de NumPy, con valores de pixel que varian de 0 a 255. Los labels son un arreglo de integros, que van del 0 al 9. Estos corresponden a la class de ropa que la imagen representa.
| Label | Class |
|---|---|
| 0 | T-shirt/top |
| 1 | Trouser |
| 2 | Pullover |
| 3 | Dress |
| 4 | Coat |
| 5 | Sandal |
| 6 | Shirt |
| 7 | Sneaker |
| 8 | Bag |
| 9 | Ankle boot |
Cada imagen es mapeada a una unica etiqueta. Ya que los Class names no estan incluidoen el dataset, almacenelo aca para usarlos luego cuando se visualicen las imagenes:
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
Explore el set de datos
Explore el formato de el set de datos antes de entrenar el modelo. Lo siguiente muestra que hay 60,000 imagenes en el set de entrenamiento, con cada imagen representada por pixeles de 28x28:
train_images.shape
(60000, 28, 28)
Asimismo, hay 60,000 etiquetas en el set de entrenamiento:
len(train_labels)
60000
Cada etiqueta es un integro entre 0 y 9:
train_labels
array([9, 0, 0, ..., 3, 0, 5], dtype=uint8)
Hay 10,000 imagenes en el set de pruebas. Otra vez, cada imagen es representada como pixeles de 28x28:
test_images.shape
(10000, 28, 28)
Y el set de pruebas contiene 10,000 etiquetas de imagen:
len(test_labels)
10000
Pre-procese el set de datos
El set de datos debe ser pre-procesada antes de entrenar la red. Si usted inspecciona la primera imagen en el set de entrenamiento, va a encontrar que los valores de los pixeles estan entre 0 y 255:
plt.figure()
plt.imshow(train_images[0])
plt.colorbar()
plt.grid(False)
plt.show()

Escale estos valores en un rango de 0 a 1 antes de alimentarlos al modelo de la red neuronal. Para hacero, divida los valores por 255. Es importante que el training set y el testing set se pre-procesen de la misma forma:
train_images = train_images / 255.0
test_images = test_images / 255.0
Para verificar que el set de datos esta en el formato adecuado y que estan listos para construir y entrenar la red, vamos a desplegar las primeras 25 imagenes de el training set y despleguemos el nombre de cada clase debajo de cada imagen.
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()

Construir el Modelo
Construir la red neuronal requiere configurar las capas del modelo y luego compilar el modelo.
Configurar las Capas
Los bloques de construccion basicos de una red neuronal son las capas o layers. Las capas extraen representaciones de el set de datos que se les alimentan. Con suerte, estas representaciones son considerables para el problema que estamos solucionando.
La mayoria de aprendizaje profundo consiste de unir capas sencillas.
La mayoria de las capas como tf.keras.layers.Dense, tienen parametros que son aprendidos durante el entrenamiento.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
La primera capa de esta red, tf.keras.layers.Flatten,
transforma el formato de las imagenes de un arreglo bi-dimensional (de 28 por 28 pixeles) a un arreglo uni dimensional (de 28*28 pixeles = 784 pixeles). Observe esta capa como una capa no apilada de filas de pixeles en la misma imagen y alineandolo. Esta capa no tiene parametros que aprender; solo reformatea el set de datos.
Despues de que los pixeles estan "aplanados", la secuencia consiste de dos capastf.keras.layers.Dense. Estas estan densamente conectadas, o completamente conectadas. La primera capa Dense tiene 128 nodos (o neuronas). La segunda (y ultima) capa es una capa de 10 nodos softmax que devuelve un arreglo de 10 probabilidades que suman a 1. Cada nodo contiene una calificacion que indica la probabilidad que la actual imagen pertenece a una de las 10 clases.
Compile el modelo
Antes de que el modelo este listo para entrenar , se necesitan algunas configuraciones mas. Estas son agregadas durante el paso de compilacion del modelo:
- Loss function —Esto mide que tan exacto es el modelo durante el entrenamiento. Quiere minimizar esta funcion para dirigir el modelo en la direccion adecuada.
- Optimizer — Esto es como el modelo se actualiza basado en el set de datos que ve y la funcion de perdida.
- Metrics — Se usan para monitorear los pasos de entrenamiento y de pruebas. El siguiente ejemplo usa accuracy (exactitud) , la fraccion de la imagenes que son correctamente clasificadas.
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
Entrenar el Modelo
Entrenar el modelo de red neuronal requiere de los siguientes pasos:
- Entregue los datos de entrenamiento al modelo. En este ejemplo , el set de datos de entrenamiento estan en los arreglos
train_imagesytrain_labels. - el modelo aprende a asociar imagenes y etiquetas.
- Usted le pregunta al modelo que haga predicciones sobre un set de datos que se encuentran en el ejemplo,incluido en el arreglo
test_images. Verifique que las predicciones sean iguales a las etiquetas de el arreglotest_labels.
Para comenzar a entrenar, llame el metodo model.fit, es llamado asi por que fit (ajusta) el modelo a el set de datos de entrenamiento:
model.fit(train_images, train_labels, epochs=10)
Epoch 1/10 1/1875 [..............................] - ETA: 0s - loss: 2.4750 - accuracy: 0.1250 35/1875 [..............................] - ETA: 2s - loss: 1.3644 - accuracy: 0.5732 70/1875 [>.............................] - ETA: 2s - loss: 1.0950 - accuracy: 0.6371 104/1875 [>.............................] - ETA: 2s - loss: 0.9755 - accuracy: 0.6689 138/1875 [=>............................] - ETA: 2s - loss: 0.9059 - accuracy: 0.6904 172/1875 [=>............................] - ETA: 2s - loss: 0.8516 - accuracy: 0.7057 207/1875 [==>...........................] - ETA: 2s - loss: 0.8094 - accuracy: 0.7216 241/1875 [==>...........................] - ETA: 2s - loss: 0.7767 - accuracy: 0.7329 275/1875 [===>..........................] - ETA: 2s - loss: 0.7476 - accuracy: 0.7427 310/1875 [===>..........................] - ETA: 2s - loss: 0.7216 - accuracy: 0.7521 344/1875 [====>.........................] - ETA: 2s - loss: 0.7050 - accuracy: 0.7563 378/1875 [=====>........................] - ETA: 2s - loss: 0.6920 - accuracy: 0.7602 412/1875 [=====>........................] - ETA: 2s - loss: 0.6852 - accuracy: 0.7636 446/1875 [======>.......................] - ETA: 2s - loss: 0.6774 - accuracy: 0.7665 480/1875 [======>.......................] - ETA: 2s - loss: 0.6630 - accuracy: 0.7714 514/1875 [=======>......................] - ETA: 2s - loss: 0.6523 - accuracy: 0.7747 548/1875 [=======>......................] - ETA: 1s - loss: 0.6429 - accuracy: 0.7779 583/1875 [========>.....................] - ETA: 1s - loss: 0.6336 - accuracy: 0.7815 618/1875 [========>.....................] - ETA: 1s - loss: 0.6267 - accuracy: 0.7833 652/1875 [=========>....................] - ETA: 1s - loss: 0.6201 - accuracy: 0.7857 687/1875 [=========>....................] - ETA: 1s - loss: 0.6131 - accuracy: 0.7870 722/1875 [==========>...................] - ETA: 1s - loss: 0.6064 - accuracy: 0.7886 756/1875 [===========>..................] - ETA: 1s - loss: 0.6013 - accuracy: 0.7901 791/1875 [===========>..................] - ETA: 1s - loss: 0.5944 - accuracy: 0.7927 826/1875 [============>.................] - ETA: 1s - loss: 0.5886 - accuracy: 0.7946 860/1875 [============>.................] - ETA: 1s - loss: 0.5855 - accuracy: 0.7957 894/1875 [=============>................] - ETA: 1s - loss: 0.5809 - accuracy: 0.7975 928/1875 [=============>................] - ETA: 1s - loss: 0.5759 - accuracy: 0.7996 962/1875 [==============>...............] - ETA: 1s - loss: 0.5716 - accuracy: 0.8010 996/1875 [==============>...............] - ETA: 1s - loss: 0.5686 - accuracy: 0.8017 1031/1875 [===============>..............] - ETA: 1s - loss: 0.5642 - accuracy: 0.8034 1066/1875 [================>.............] - ETA: 1s - loss: 0.5608 - accuracy: 0.8044 1100/1875 [================>.............] - ETA: 1s - loss: 0.5564 - accuracy: 0.8062 1134/1875 [=================>............] - ETA: 1s - loss: 0.5527 - accuracy: 0.8077 1168/1875 [=================>............] - ETA: 1s - loss: 0.5507 - accuracy: 0.8083 1202/1875 [==================>...........] - ETA: 0s - loss: 0.5479 - accuracy: 0.8091 1236/1875 [==================>...........] - ETA: 0s - loss: 0.5449 - accuracy: 0.8099 1271/1875 [===================>..........] - ETA: 0s - loss: 0.5418 - accuracy: 0.8109 1306/1875 [===================>..........] - ETA: 0s - loss: 0.5398 - accuracy: 0.8117 1341/1875 [====================>.........] - ETA: 0s - loss: 0.5377 - accuracy: 0.8126 1375/1875 [=====================>........] - ETA: 0s - loss: 0.5345 - accuracy: 0.8133 1409/1875 [=====================>........] - ETA: 0s - loss: 0.5313 - accuracy: 0.8143 1443/1875 [======================>.......] - ETA: 0s - loss: 0.5289 - accuracy: 0.8152 1477/1875 [======================>.......] - ETA: 0s - loss: 0.5257 - accuracy: 0.8162 1511/1875 [=======================>......] - ETA: 0s - loss: 0.5240 - accuracy: 0.8169 1546/1875 [=======================>......] - ETA: 0s - loss: 0.5218 - accuracy: 0.8175 1580/1875 [========================>.....] - ETA: 0s - loss: 0.5189 - accuracy: 0.8184 1614/1875 [========================>.....] - ETA: 0s - loss: 0.5158 - accuracy: 0.8192 1649/1875 [=========================>....] - ETA: 0s - loss: 0.5122 - accuracy: 0.8204 1683/1875 [=========================>....] - ETA: 0s - loss: 0.5100 - accuracy: 0.8210 1717/1875 [==========================>...] - ETA: 0s - loss: 0.5088 - accuracy: 0.8211 1752/1875 [===========================>..] - ETA: 0s - loss: 0.5067 - accuracy: 0.8221 1785/1875 [===========================>..] - ETA: 0s - loss: 0.5049 - accuracy: 0.8228 1820/1875 [============================>.] - ETA: 0s - loss: 0.5036 - accuracy: 0.8233 1853/1875 [============================>.] - ETA: 0s - loss: 0.5012 - accuracy: 0.8238 1875/1875 [==============================] - 3s 1ms/step - loss: 0.5003 - accuracy: 0.8241 Epoch 2/10 1/1875 [..............................] - ETA: 0s - loss: 0.3235 - accuracy: 0.8438 33/1875 [..............................] - ETA: 2s - loss: 0.3450 - accuracy: 0.8816 66/1875 [>.............................] - ETA: 2s - loss: 0.3862 - accuracy: 0.8617 100/1875 [>.............................] - ETA: 2s - loss: 0.4087 - accuracy: 0.8594 134/1875 [=>............................] - ETA: 2s - loss: 0.4085 - accuracy: 0.8601 168/1875 [=>............................] - ETA: 2s - loss: 0.4066 - accuracy: 0.8609 202/1875 [==>...........................] - ETA: 2s - loss: 0.3978 - accuracy: 0.8632 235/1875 [==>...........................] - ETA: 2s - loss: 0.3924 - accuracy: 0.8636 270/1875 [===>..........................] - ETA: 2s - loss: 0.3928 - accuracy: 0.8625 305/1875 [===>..........................] - ETA: 2s - loss: 0.3941 - accuracy: 0.8618 340/1875 [====>.........................] - ETA: 2s - loss: 0.3969 - accuracy: 0.8591 374/1875 [====>.........................] - ETA: 2s - loss: 0.3965 - accuracy: 0.8598 409/1875 [=====>........................] - ETA: 2s - loss: 0.3945 - accuracy: 0.8602 444/1875 [======>.......................] - ETA: 2s - loss: 0.3913 - accuracy: 0.8610 479/1875 [======>.......................] - ETA: 2s - loss: 0.3892 - accuracy: 0.8620 514/1875 [=======>......................] - ETA: 2s - loss: 0.3870 - accuracy: 0.8622 548/1875 [=======>......................] - ETA: 1s - loss: 0.3855 - accuracy: 0.8628 582/1875 [========>.....................] - ETA: 1s - loss: 0.3849 - accuracy: 0.8628 616/1875 [========>.....................] - ETA: 1s - loss: 0.3850 - accuracy: 0.8622 650/1875 [=========>....................] - ETA: 1s - loss: 0.3852 - accuracy: 0.8615 685/1875 [=========>....................] - ETA: 1s - loss: 0.3841 - accuracy: 0.8619 719/1875 [==========>...................] - ETA: 1s - loss: 0.3867 - accuracy: 0.8614 754/1875 [===========>..................] - ETA: 1s - loss: 0.3852 - accuracy: 0.8617 789/1875 [===========>..................] - ETA: 1s - loss: 0.3840 - accuracy: 0.8622 823/1875 [============>.................] - ETA: 1s - loss: 0.3850 - accuracy: 0.8620 857/1875 [============>.................] - ETA: 1s - loss: 0.3856 - accuracy: 0.8621 891/1875 [=============>................] - ETA: 1s - loss: 0.3856 - accuracy: 0.8620 925/1875 [=============>................] - ETA: 1s - loss: 0.3861 - accuracy: 0.8617 959/1875 [==============>...............] - ETA: 1s - loss: 0.3858 - accuracy: 0.8617 993/1875 [==============>...............] - ETA: 1s - loss: 0.3842 - accuracy: 0.8625 1027/1875 [===============>..............] - ETA: 1s - loss: 0.3830 - accuracy: 0.8629 1062/1875 [===============>..............] - ETA: 1s - loss: 0.3829 - accuracy: 0.8628 1096/1875 [================>.............] - ETA: 1s - loss: 0.3816 - accuracy: 0.8632 1130/1875 [=================>............] - ETA: 1s - loss: 0.3816 - accuracy: 0.8632 1164/1875 [=================>............] - ETA: 1s - loss: 0.3817 - accuracy: 0.8630 1198/1875 [==================>...........] - ETA: 1s - loss: 0.3817 - accuracy: 0.8630 1232/1875 [==================>...........] - ETA: 0s - loss: 0.3810 - accuracy: 0.8628 1266/1875 [===================>..........] - ETA: 0s - loss: 0.3808 - accuracy: 0.8631 1300/1875 [===================>..........] - ETA: 0s - loss: 0.3811 - accuracy: 0.8633 1335/1875 [====================>.........] - ETA: 0s - loss: 0.3804 - accuracy: 0.8636 1368/1875 [====================>.........] - ETA: 0s - loss: 0.3795 - accuracy: 0.8638 1402/1875 [=====================>........] - ETA: 0s - loss: 0.3786 - accuracy: 0.8642 1437/1875 [=====================>........] - ETA: 0s - loss: 0.3783 - accuracy: 0.8644 1472/1875 [======================>.......] - ETA: 0s - loss: 0.3776 - accuracy: 0.8648 1505/1875 [=======================>......] - ETA: 0s - loss: 0.3772 - accuracy: 0.8648 1539/1875 [=======================>......] - ETA: 0s - loss: 0.3759 - accuracy: 0.8653 1574/1875 [========================>.....] - ETA: 0s - loss: 0.3756 - accuracy: 0.8654 1608/1875 [========================>.....] - ETA: 0s - loss: 0.3751 - accuracy: 0.8656 1642/1875 [=========================>....] - ETA: 0s - loss: 0.3753 - accuracy: 0.8658 1676/1875 [=========================>....] - ETA: 0s - loss: 0.3748 - accuracy: 0.8658 1710/1875 [==========================>...] - ETA: 0s - loss: 0.3747 - accuracy: 0.8657 1744/1875 [==========================>...] - ETA: 0s - loss: 0.3752 - accuracy: 0.8657 1778/1875 [===========================>..] - ETA: 0s - loss: 0.3745 - accuracy: 0.8658 1813/1875 [============================>.] - ETA: 0s - loss: 0.3745 - accuracy: 0.8661 1848/1875 [============================>.] - ETA: 0s - loss: 0.3746 - accuracy: 0.8662 1875/1875 [==============================] - 3s 1ms/step - loss: 0.3747 - accuracy: 0.8661 Epoch 3/10 1/1875 [..............................] - ETA: 0s - loss: 0.1675 - accuracy: 0.9375 36/1875 [..............................] - ETA: 2s - loss: 0.3319 - accuracy: 0.8741 70/1875 [>.............................] - ETA: 2s - loss: 0.3328 - accuracy: 0.8781 104/1875 [>.............................] - ETA: 2s - loss: 0.3235 - accuracy: 0.8834 139/1875 [=>............................] - ETA: 2s - loss: 0.3237 - accuracy: 0.8833 173/1875 [=>............................] - ETA: 2s - loss: 0.3257 - accuracy: 0.8801 208/1875 [==>...........................] - ETA: 2s - loss: 0.3338 - accuracy: 0.8777 243/1875 [==>...........................] - ETA: 2s - loss: 0.3362 - accuracy: 0.8760 278/1875 [===>..........................] - ETA: 2s - loss: 0.3381 - accuracy: 0.8750 312/1875 [===>..........................] - ETA: 2s - loss: 0.3375 - accuracy: 0.8766 346/1875 [====>.........................] - ETA: 2s - loss: 0.3380 - accuracy: 0.8764 381/1875 [=====>........................] - ETA: 2s - loss: 0.3371 - accuracy: 0.8763 415/1875 [=====>........................] - ETA: 2s - loss: 0.3381 - accuracy: 0.8761 449/1875 [======>.......................] - ETA: 2s - loss: 0.3359 - accuracy: 0.8762 483/1875 [======>.......................] - ETA: 2s - loss: 0.3373 - accuracy: 0.8763 517/1875 [=======>......................] - ETA: 1s - loss: 0.3386 - accuracy: 0.8761 552/1875 [=======>......................] - ETA: 1s - loss: 0.3394 - accuracy: 0.8760 587/1875 [========>.....................] - ETA: 1s - loss: 0.3375 - accuracy: 0.8771 622/1875 [========>.....................] - ETA: 1s - loss: 0.3364 - accuracy: 0.8774 656/1875 [=========>....................] - ETA: 1s - loss: 0.3367 - accuracy: 0.8772 690/1875 [==========>...................] - ETA: 1s - loss: 0.3359 - accuracy: 0.8774 724/1875 [==========>...................] - ETA: 1s - loss: 0.3351 - accuracy: 0.8775 757/1875 [===========>..................] - ETA: 1s - loss: 0.3334 - accuracy: 0.8783 791/1875 [===========>..................] - ETA: 1s - loss: 0.3340 - accuracy: 0.8781 826/1875 [============>.................] - ETA: 1s - loss: 0.3344 - accuracy: 0.8776 860/1875 [============>.................] - ETA: 1s - loss: 0.3350 - accuracy: 0.8775 894/1875 [=============>................] - ETA: 1s - loss: 0.3352 - accuracy: 0.8775 928/1875 [=============>................] - ETA: 1s - loss: 0.3362 - accuracy: 0.8770 962/1875 [==============>...............] - ETA: 1s - loss: 0.3371 - accuracy: 0.8770 997/1875 [==============>...............] - ETA: 1s - loss: 0.3377 - accuracy: 0.8770 1031/1875 [===============>..............] - ETA: 1s - loss: 0.3368 - accuracy: 0.8771 1065/1875 [================>.............] - ETA: 1s - loss: 0.3370 - accuracy: 0.8768 1099/1875 [================>.............] - ETA: 1s - loss: 0.3381 - accuracy: 0.8765 1134/1875 [=================>............] - ETA: 1s - loss: 0.3367 - accuracy: 0.8771 1169/1875 [=================>............] - ETA: 1s - loss: 0.3372 - accuracy: 0.8770 1204/1875 [==================>...........] - ETA: 0s - loss: 0.3373 - accuracy: 0.8772 1239/1875 [==================>...........] - ETA: 0s - loss: 0.3380 - accuracy: 0.8769 1274/1875 [===================>..........] - ETA: 0s - loss: 0.3364 - accuracy: 0.8776 1308/1875 [===================>..........] - ETA: 0s - loss: 0.3357 - accuracy: 0.8779 1342/1875 [====================>.........] - ETA: 0s - loss: 0.3366 - accuracy: 0.8775 1376/1875 [=====================>........] - ETA: 0s - loss: 0.3359 - accuracy: 0.8779 1410/1875 [=====================>........] - ETA: 0s - loss: 0.3350 - accuracy: 0.8780 1445/1875 [======================>.......] - ETA: 0s - loss: 0.3349 - accuracy: 0.8778 1479/1875 [======================>.......] - ETA: 0s - loss: 0.3336 - accuracy: 0.8780 1513/1875 [=======================>......] - ETA: 0s - loss: 0.3335 - accuracy: 0.8781 1547/1875 [=======================>......] - ETA: 0s - loss: 0.3335 - accuracy: 0.8783 1581/1875 [========================>.....] - ETA: 0s - loss: 0.3332 - accuracy: 0.8784 1616/1875 [========================>.....] - ETA: 0s - loss: 0.3334 - accuracy: 0.8784 1650/1875 [=========================>....] - ETA: 0s - loss: 0.3340 - accuracy: 0.8784 1684/1875 [=========================>....] - ETA: 0s - loss: 0.3350 - accuracy: 0.8779 1718/1875 [==========================>...] - ETA: 0s - loss: 0.3343 - accuracy: 0.8783 1752/1875 [===========================>..] - ETA: 0s - loss: 0.3346 - accuracy: 0.8784 1787/1875 [===========================>..] - ETA: 0s - loss: 0.3347 - accuracy: 0.8784 1821/1875 [============================>.] - ETA: 0s - loss: 0.3349 - accuracy: 0.8782 1855/1875 [============================>.] - ETA: 0s - loss: 0.3355 - accuracy: 0.8778 1875/1875 [==============================] - 3s 1ms/step - loss: 0.3359 - accuracy: 0.8776 Epoch 4/10 1/1875 [..............................] - ETA: 0s - loss: 0.3793 - accuracy: 0.9375 35/1875 [..............................] - ETA: 2s - loss: 0.3246 - accuracy: 0.8768 68/1875 [>.............................] - ETA: 2s - loss: 0.3076 - accuracy: 0.8842 100/1875 [>.............................] - ETA: 2s - loss: 0.3153 - accuracy: 0.8831 133/1875 [=>............................] - ETA: 2s - loss: 0.3115 - accuracy: 0.8863 166/1875 [=>............................] - ETA: 2s - loss: 0.3206 - accuracy: 0.8829 199/1875 [==>...........................] - ETA: 2s - loss: 0.3201 - accuracy: 0.8822 233/1875 [==>...........................] - ETA: 2s - loss: 0.3188 - accuracy: 0.8830 267/1875 [===>..........................] - ETA: 2s - loss: 0.3207 - accuracy: 0.8819 300/1875 [===>..........................] - ETA: 2s - loss: 0.3224 - accuracy: 0.8818 334/1875 [====>.........................] - ETA: 2s - loss: 0.3229 - accuracy: 0.8813 368/1875 [====>.........................] - ETA: 2s - loss: 0.3240 - accuracy: 0.8808 401/1875 [=====>........................] - ETA: 2s - loss: 0.3217 - accuracy: 0.8825 434/1875 [=====>........................] - ETA: 2s - loss: 0.3213 - accuracy: 0.8821 468/1875 [======>.......................] - ETA: 2s - loss: 0.3211 - accuracy: 0.8827 502/1875 [=======>......................] - ETA: 2s - loss: 0.3221 - accuracy: 0.8821 536/1875 [=======>......................] - ETA: 2s - loss: 0.3224 - accuracy: 0.8824 570/1875 [========>.....................] - ETA: 1s - loss: 0.3205 - accuracy: 0.8825 604/1875 [========>.....................] - ETA: 1s - loss: 0.3188 - accuracy: 0.8832 638/1875 [=========>....................] - ETA: 1s - loss: 0.3203 - accuracy: 0.8825 672/1875 [=========>....................] - ETA: 1s - loss: 0.3194 - accuracy: 0.8824 707/1875 [==========>...................] - ETA: 1s - loss: 0.3193 - accuracy: 0.8826 740/1875 [==========>...................] - ETA: 1s - loss: 0.3210 - accuracy: 0.8822 774/1875 [===========>..................] - ETA: 1s - loss: 0.3201 - accuracy: 0.8823 807/1875 [===========>..................] - ETA: 1s - loss: 0.3199 - accuracy: 0.8825 841/1875 [============>.................] - ETA: 1s - loss: 0.3206 - accuracy: 0.8820 874/1875 [============>.................] - ETA: 1s - loss: 0.3223 - accuracy: 0.8818 908/1875 [=============>................] - ETA: 1s - loss: 0.3212 - accuracy: 0.8822 942/1875 [==============>...............] - ETA: 1s - loss: 0.3219 - accuracy: 0.8817 976/1875 [==============>...............] - ETA: 1s - loss: 0.3207 - accuracy: 0.8819 1010/1875 [===============>..............] - ETA: 1s - loss: 0.3192 - accuracy: 0.8822 1044/1875 [===============>..............] - ETA: 1s - loss: 0.3181 - accuracy: 0.8825 1078/1875 [================>.............] - ETA: 1s - loss: 0.3182 - accuracy: 0.8827 1112/1875 [================>.............] - ETA: 1s - loss: 0.3178 - accuracy: 0.8828 1146/1875 [=================>............] - ETA: 1s - loss: 0.3179 - accuracy: 0.8829 1180/1875 [=================>............] - ETA: 1s - loss: 0.3175 - accuracy: 0.8832 1214/1875 [==================>...........] - ETA: 0s - loss: 0.3175 - accuracy: 0.8832 1249/1875 [==================>...........] - ETA: 0s - loss: 0.3171 - accuracy: 0.8834 1283/1875 [===================>..........] - ETA: 0s - loss: 0.3163 - accuracy: 0.8835 1317/1875 [====================>.........] - ETA: 0s - loss: 0.3169 - accuracy: 0.8834 1351/1875 [====================>.........] - ETA: 0s - loss: 0.3165 - accuracy: 0.8836 1385/1875 [=====================>........] - ETA: 0s - loss: 0.3157 - accuracy: 0.8837 1418/1875 [=====================>........] - ETA: 0s - loss: 0.3159 - accuracy: 0.8835 1453/1875 [======================>.......] - ETA: 0s - loss: 0.3149 - accuracy: 0.8838 1485/1875 [======================>.......] - ETA: 0s - loss: 0.3141 - accuracy: 0.8841 1519/1875 [=======================>......] - ETA: 0s - loss: 0.3134 - accuracy: 0.8845 1553/1875 [=======================>......] - ETA: 0s - loss: 0.3130 - accuracy: 0.8849 1586/1875 [========================>.....] - ETA: 0s - loss: 0.3126 - accuracy: 0.8851 1620/1875 [========================>.....] - ETA: 0s - loss: 0.3122 - accuracy: 0.8852 1654/1875 [=========================>....] - ETA: 0s - loss: 0.3121 - accuracy: 0.8855 1687/1875 [=========================>....] - ETA: 0s - loss: 0.3121 - accuracy: 0.8855 1721/1875 [==========================>...] - ETA: 0s - loss: 0.3121 - accuracy: 0.8855 1754/1875 [===========================>..] - ETA: 0s - loss: 0.3116 - accuracy: 0.8855 1788/1875 [===========================>..] - ETA: 0s - loss: 0.3111 - accuracy: 0.8858 1822/1875 [============================>.] - ETA: 0s - loss: 0.3112 - accuracy: 0.8857 1855/1875 [============================>.] - ETA: 0s - loss: 0.3110 - accuracy: 0.8858 1875/1875 [==============================] - 3s 2ms/step - loss: 0.3106 - accuracy: 0.8859 Epoch 5/10 1/1875 [..............................] - ETA: 0s - loss: 0.3088 - accuracy: 0.8750 34/1875 [..............................] - ETA: 2s - loss: 0.2928 - accuracy: 0.8989 68/1875 [>.............................] - ETA: 2s - loss: 0.2999 - accuracy: 0.8929 102/1875 [>.............................] - ETA: 2s - loss: 0.3018 - accuracy: 0.8888 136/1875 [=>............................] - ETA: 2s - loss: 0.3012 - accuracy: 0.8890 170/1875 [=>............................] - ETA: 2s - loss: 0.2936 - accuracy: 0.8908 204/1875 [==>...........................] - ETA: 2s - loss: 0.2933 - accuracy: 0.8900 238/1875 [==>...........................] - ETA: 2s - loss: 0.2884 - accuracy: 0.8914 272/1875 [===>..........................] - ETA: 2s - loss: 0.2928 - accuracy: 0.8917 306/1875 [===>..........................] - ETA: 2s - loss: 0.2886 - accuracy: 0.8935 340/1875 [====>.........................] - ETA: 2s - loss: 0.2846 - accuracy: 0.8943 375/1875 [=====>........................] - ETA: 2s - loss: 0.2826 - accuracy: 0.8951 410/1875 [=====>........................] - ETA: 2s - loss: 0.2856 - accuracy: 0.8950 444/1875 [======>.......................] - ETA: 2s - loss: 0.2863 - accuracy: 0.8941 479/1875 [======>.......................] - ETA: 2s - loss: 0.2875 - accuracy: 0.8937 513/1875 [=======>......................] - ETA: 2s - loss: 0.2906 - accuracy: 0.8923 547/1875 [=======>......................] - ETA: 1s - loss: 0.2917 - accuracy: 0.8914 582/1875 [========>.....................] - ETA: 1s - loss: 0.2905 - accuracy: 0.8919 616/1875 [========>.....................] - ETA: 1s - loss: 0.2937 - accuracy: 0.8907 651/1875 [=========>....................] - ETA: 1s - loss: 0.2948 - accuracy: 0.8907 685/1875 [=========>....................] - ETA: 1s - loss: 0.2965 - accuracy: 0.8896 719/1875 [==========>...................] - ETA: 1s - loss: 0.2952 - accuracy: 0.8895 754/1875 [===========>..................] - ETA: 1s - loss: 0.2949 - accuracy: 0.8896 789/1875 [===========>..................] - ETA: 1s - loss: 0.2950 - accuracy: 0.8898 824/1875 [============>.................] - ETA: 1s - loss: 0.2941 - accuracy: 0.8904 858/1875 [============>.................] - ETA: 1s - loss: 0.2939 - accuracy: 0.8903 894/1875 [=============>................] - ETA: 1s - loss: 0.2930 - accuracy: 0.8908 928/1875 [=============>................] - ETA: 1s - loss: 0.2935 - accuracy: 0.8909 962/1875 [==============>...............] - ETA: 1s - loss: 0.2928 - accuracy: 0.8913 996/1875 [==============>...............] - ETA: 1s - loss: 0.2909 - accuracy: 0.8920 1030/1875 [===============>..............] - ETA: 1s - loss: 0.2912 - accuracy: 0.8917 1064/1875 [================>.............] - ETA: 1s - loss: 0.2922 - accuracy: 0.8911 1098/1875 [================>.............] - ETA: 1s - loss: 0.2926 - accuracy: 0.8909 1132/1875 [=================>............] - ETA: 1s - loss: 0.2921 - accuracy: 0.8911 1165/1875 [=================>............] - ETA: 1s - loss: 0.2926 - accuracy: 0.8909 1199/1875 [==================>...........] - ETA: 1s - loss: 0.2926 - accuracy: 0.8909 1233/1875 [==================>...........] - ETA: 0s - loss: 0.2927 - accuracy: 0.8908 1267/1875 [===================>..........] - ETA: 0s - loss: 0.2933 - accuracy: 0.8907 1302/1875 [===================>..........] - ETA: 0s - loss: 0.2948 - accuracy: 0.8902 1336/1875 [====================>.........] - ETA: 0s - loss: 0.2945 - accuracy: 0.8904 1370/1875 [====================>.........] - ETA: 0s - loss: 0.2935 - accuracy: 0.8910 1404/1875 [=====================>........] - ETA: 0s - loss: 0.2928 - accuracy: 0.8913 1439/1875 [======================>.......] - ETA: 0s - loss: 0.2928 - accuracy: 0.8913 1473/1875 [======================>.......] - ETA: 0s - loss: 0.2937 - accuracy: 0.8910 1507/1875 [=======================>......] - ETA: 0s - loss: 0.2937 - accuracy: 0.8908 1541/1875 [=======================>......] - ETA: 0s - loss: 0.2939 - accuracy: 0.8905 1575/1875 [========================>.....] - ETA: 0s - loss: 0.2939 - accuracy: 0.8907 1609/1875 [========================>.....] - ETA: 0s - loss: 0.2945 - accuracy: 0.8906 1643/1875 [=========================>....] - ETA: 0s - loss: 0.2943 - accuracy: 0.8908 1677/1875 [=========================>....] - ETA: 0s - loss: 0.2943 - accuracy: 0.8907 1711/1875 [==========================>...] - ETA: 0s - loss: 0.2938 - accuracy: 0.8911 1745/1875 [==========================>...] - ETA: 0s - loss: 0.2941 - accuracy: 0.8912 1779/1875 [===========================>..] - ETA: 0s - loss: 0.2941 - accuracy: 0.8911 1812/1875 [===========================>..] - ETA: 0s - loss: 0.2937 - accuracy: 0.8912 1846/1875 [============================>.] - ETA: 0s - loss: 0.2942 - accuracy: 0.8911 1875/1875 [==============================] - 3s 1ms/step - loss: 0.2940 - accuracy: 0.8912 Epoch 6/10 1/1875 [..............................] - ETA: 0s - loss: 0.3256 - accuracy: 0.8438 36/1875 [..............................] - ETA: 2s - loss: 0.2717 - accuracy: 0.9123 69/1875 [>.............................] - ETA: 2s - loss: 0.2880 - accuracy: 0.8995 102/1875 [>.............................] - ETA: 2s - loss: 0.2856 - accuracy: 0.8968 136/1875 [=>............................] - ETA: 2s - loss: 0.2884 - accuracy: 0.8989 169/1875 [=>............................] - ETA: 2s - loss: 0.2848 - accuracy: 0.8987 203/1875 [==>...........................] - ETA: 2s - loss: 0.2863 - accuracy: 0.8987 237/1875 [==>...........................] - ETA: 2s - loss: 0.2858 - accuracy: 0.8981 271/1875 [===>..........................] - ETA: 2s - loss: 0.2864 - accuracy: 0.8979 305/1875 [===>..........................] - ETA: 2s - loss: 0.2854 - accuracy: 0.8986 339/1875 [====>.........................] - ETA: 2s - loss: 0.2857 - accuracy: 0.8986 373/1875 [====>.........................] - ETA: 2s - loss: 0.2861 - accuracy: 0.8983 407/1875 [=====>........................] - ETA: 2s - loss: 0.2873 - accuracy: 0.8970 441/1875 [======>.......................] - ETA: 2s - loss: 0.2856 - accuracy: 0.8971 475/1875 [======>.......................] - ETA: 2s - loss: 0.2851 - accuracy: 0.8963 509/1875 [=======>......................] - ETA: 2s - loss: 0.2849 - accuracy: 0.8969 543/1875 [=======>......................] - ETA: 1s - loss: 0.2863 - accuracy: 0.8959 577/1875 [========>.....................] - ETA: 1s - loss: 0.2858 - accuracy: 0.8959 610/1875 [========>.....................] - ETA: 1s - loss: 0.2865 - accuracy: 0.8950 644/1875 [=========>....................] - ETA: 1s - loss: 0.2850 - accuracy: 0.8952 678/1875 [=========>....................] - ETA: 1s - loss: 0.2836 - accuracy: 0.8958 712/1875 [==========>...................] - ETA: 1s - loss: 0.2833 - accuracy: 0.8955 746/1875 [==========>...................] - ETA: 1s - loss: 0.2837 - accuracy: 0.8952 780/1875 [===========>..................] - ETA: 1s - loss: 0.2839 - accuracy: 0.8954 814/1875 [============>.................] - ETA: 1s - loss: 0.2846 - accuracy: 0.8953 848/1875 [============>.................] - ETA: 1s - loss: 0.2843 - accuracy: 0.8952 882/1875 [=============>................] - ETA: 1s - loss: 0.2832 - accuracy: 0.8955 916/1875 [=============>................] - ETA: 1s - loss: 0.2825 - accuracy: 0.8958 950/1875 [==============>...............] - ETA: 1s - loss: 0.2826 - accuracy: 0.8958 984/1875 [==============>...............] - ETA: 1s - loss: 0.2820 - accuracy: 0.8960 1018/1875 [===============>..............] - ETA: 1s - loss: 0.2812 - accuracy: 0.8962 1052/1875 [===============>..............] - ETA: 1s - loss: 0.2814 - accuracy: 0.8956 1085/1875 [================>.............] - ETA: 1s - loss: 0.2809 - accuracy: 0.8960 1118/1875 [================>.............] - ETA: 1s - loss: 0.2811 - accuracy: 0.8960 1152/1875 [=================>............] - ETA: 1s - loss: 0.2812 - accuracy: 0.8960 1186/1875 [=================>............] - ETA: 1s - loss: 0.2811 - accuracy: 0.8958 1220/1875 [==================>...........] - ETA: 0s - loss: 0.2802 - accuracy: 0.8962 1254/1875 [===================>..........] - ETA: 0s - loss: 0.2802 - accuracy: 0.8962 1288/1875 [===================>..........] - ETA: 0s - loss: 0.2811 - accuracy: 0.8961 1322/1875 [====================>.........] - ETA: 0s - loss: 0.2810 - accuracy: 0.8961 1356/1875 [====================>.........] - ETA: 0s - loss: 0.2807 - accuracy: 0.8964 1391/1875 [=====================>........] - ETA: 0s - loss: 0.2803 - accuracy: 0.8963 1425/1875 [=====================>........] - ETA: 0s - loss: 0.2798 - accuracy: 0.8963 1459/1875 [======================>.......] - ETA: 0s - loss: 0.2806 - accuracy: 0.8962 1494/1875 [======================>.......] - ETA: 0s - loss: 0.2806 - accuracy: 0.8963 1528/1875 [=======================>......] - ETA: 0s - loss: 0.2801 - accuracy: 0.8965 1562/1875 [=======================>......] - ETA: 0s - loss: 0.2799 - accuracy: 0.8966 1596/1875 [========================>.....] - ETA: 0s - loss: 0.2794 - accuracy: 0.8969 1631/1875 [=========================>....] - ETA: 0s - loss: 0.2796 - accuracy: 0.8967 1665/1875 [=========================>....] - ETA: 0s - loss: 0.2794 - accuracy: 0.8967 1699/1875 [==========================>...] - ETA: 0s - loss: 0.2791 - accuracy: 0.8969 1733/1875 [==========================>...] - ETA: 0s - loss: 0.2800 - accuracy: 0.8964 1766/1875 [===========================>..] - ETA: 0s - loss: 0.2789 - accuracy: 0.8968 1798/1875 [===========================>..] - ETA: 0s - loss: 0.2793 - accuracy: 0.8967 1830/1875 [============================>.] - ETA: 0s - loss: 0.2796 - accuracy: 0.8966 1861/1875 [============================>.] - ETA: 0s - loss: 0.2800 - accuracy: 0.8965 1875/1875 [==============================] - 3s 2ms/step - loss: 0.2797 - accuracy: 0.8967 Epoch 7/10 1/1875 [..............................] - ETA: 0s - loss: 0.2288 - accuracy: 0.9062 34/1875 [..............................] - ETA: 2s - loss: 0.2903 - accuracy: 0.8934 67/1875 [>.............................] - ETA: 2s - loss: 0.2679 - accuracy: 0.9021 99/1875 [>.............................] - ETA: 2s - loss: 0.2719 - accuracy: 0.9028 131/1875 [=>............................] - ETA: 2s - loss: 0.2639 - accuracy: 0.9043 164/1875 [=>............................] - ETA: 2s - loss: 0.2693 - accuracy: 0.9028 197/1875 [==>...........................] - ETA: 2s - loss: 0.2694 - accuracy: 0.9024 230/1875 [==>...........................] - ETA: 2s - loss: 0.2687 - accuracy: 0.9030 264/1875 [===>..........................] - ETA: 2s - loss: 0.2654 - accuracy: 0.9045 297/1875 [===>..........................] - ETA: 2s - loss: 0.2657 - accuracy: 0.9028 331/1875 [====>.........................] - ETA: 2s - loss: 0.2668 - accuracy: 0.9023 364/1875 [====>.........................] - ETA: 2s - loss: 0.2654 - accuracy: 0.9027 398/1875 [=====>........................] - ETA: 2s - loss: 0.2688 - accuracy: 0.9009 432/1875 [=====>........................] - ETA: 2s - loss: 0.2675 - accuracy: 0.9013 466/1875 [======>.......................] - ETA: 2s - loss: 0.2668 - accuracy: 0.9012 500/1875 [=======>......................] - ETA: 2s - loss: 0.2668 - accuracy: 0.9006 534/1875 [=======>......................] - ETA: 2s - loss: 0.2649 - accuracy: 0.9012 568/1875 [========>.....................] - ETA: 1s - loss: 0.2653 - accuracy: 0.9011 602/1875 [========>.....................] - ETA: 1s - loss: 0.2667 - accuracy: 0.9011 635/1875 [=========>....................] - ETA: 1s - loss: 0.2654 - accuracy: 0.9013 668/1875 [=========>....................] - ETA: 1s - loss: 0.2659 - accuracy: 0.9014 701/1875 [==========>...................] - ETA: 1s - loss: 0.2645 - accuracy: 0.9024 734/1875 [==========>...................] - ETA: 1s - loss: 0.2649 - accuracy: 0.9021 768/1875 [===========>..................] - ETA: 1s - loss: 0.2655 - accuracy: 0.9023 801/1875 [===========>..................] - ETA: 1s - loss: 0.2656 - accuracy: 0.9022 835/1875 [============>.................] - ETA: 1s - loss: 0.2644 - accuracy: 0.9023 869/1875 [============>.................] - ETA: 1s - loss: 0.2631 - accuracy: 0.9028 903/1875 [=============>................] - ETA: 1s - loss: 0.2635 - accuracy: 0.9025 937/1875 [=============>................] - ETA: 1s - loss: 0.2637 - accuracy: 0.9021 971/1875 [==============>...............] - ETA: 1s - loss: 0.2634 - accuracy: 0.9024 1006/1875 [===============>..............] - ETA: 1s - loss: 0.2628 - accuracy: 0.9025 1040/1875 [===============>..............] - ETA: 1s - loss: 0.2620 - accuracy: 0.9030 1074/1875 [================>.............] - ETA: 1s - loss: 0.2615 - accuracy: 0.9031 1108/1875 [================>.............] - ETA: 1s - loss: 0.2621 - accuracy: 0.9031 1142/1875 [=================>............] - ETA: 1s - loss: 0.2629 - accuracy: 0.9027 1176/1875 [=================>............] - ETA: 1s - loss: 0.2629 - accuracy: 0.9029 1210/1875 [==================>...........] - ETA: 1s - loss: 0.2643 - accuracy: 0.9023 1244/1875 [==================>...........] - ETA: 0s - loss: 0.2645 - accuracy: 0.9023 1278/1875 [===================>..........] - ETA: 0s - loss: 0.2646 - accuracy: 0.9021 1311/1875 [===================>..........] - ETA: 0s - loss: 0.2650 - accuracy: 0.9021 1345/1875 [====================>.........] - ETA: 0s - loss: 0.2657 - accuracy: 0.9019 1378/1875 [=====================>........] - ETA: 0s - loss: 0.2664 - accuracy: 0.9018 1412/1875 [=====================>........] - ETA: 0s - loss: 0.2664 - accuracy: 0.9017 1446/1875 [======================>.......] - ETA: 0s - loss: 0.2665 - accuracy: 0.9014 1480/1875 [======================>.......] - ETA: 0s - loss: 0.2658 - accuracy: 0.9016 1513/1875 [=======================>......] - ETA: 0s - loss: 0.2661 - accuracy: 0.9017 1546/1875 [=======================>......] - ETA: 0s - loss: 0.2668 - accuracy: 0.9013 1580/1875 [========================>.....] - ETA: 0s - loss: 0.2666 - accuracy: 0.9015 1614/1875 [========================>.....] - ETA: 0s - loss: 0.2668 - accuracy: 0.9015 1648/1875 [=========================>....] - ETA: 0s - loss: 0.2667 - accuracy: 0.9015 1682/1875 [=========================>....] - ETA: 0s - loss: 0.2668 - accuracy: 0.9015 1716/1875 [==========================>...] - ETA: 0s - loss: 0.2671 - accuracy: 0.9013 1751/1875 [===========================>..] - ETA: 0s - loss: 0.2683 - accuracy: 0.9010 1786/1875 [===========================>..] - ETA: 0s - loss: 0.2690 - accuracy: 0.9009 1819/1875 [============================>.] - ETA: 0s - loss: 0.2694 - accuracy: 0.9007 1853/1875 [============================>.] - ETA: 0s - loss: 0.2689 - accuracy: 0.9009 1875/1875 [==============================] - 3s 2ms/step - loss: 0.2685 - accuracy: 0.9010 Epoch 8/10 1/1875 [..............................] - ETA: 0s - loss: 0.2126 - accuracy: 0.9375 34/1875 [..............................] - ETA: 2s - loss: 0.2296 - accuracy: 0.9182 68/1875 [>.............................] - ETA: 2s - loss: 0.2486 - accuracy: 0.9099 102/1875 [>.............................] - ETA: 2s - loss: 0.2420 - accuracy: 0.9081 136/1875 [=>............................] - ETA: 2s - loss: 0.2409 - accuracy: 0.9072 170/1875 [=>............................] - ETA: 2s - loss: 0.2419 - accuracy: 0.9064 203/1875 [==>...........................] - ETA: 2s - loss: 0.2445 - accuracy: 0.9047 237/1875 [==>...........................] - ETA: 2s - loss: 0.2433 - accuracy: 0.9057 270/1875 [===>..........................] - ETA: 2s - loss: 0.2429 - accuracy: 0.9065 304/1875 [===>..........................] - ETA: 2s - loss: 0.2438 - accuracy: 0.9066 338/1875 [====>.........................] - ETA: 2s - loss: 0.2419 - accuracy: 0.9075 371/1875 [====>.........................] - ETA: 2s - loss: 0.2427 - accuracy: 0.9071 404/1875 [=====>........................] - ETA: 2s - loss: 0.2433 - accuracy: 0.9066 438/1875 [======>.......................] - ETA: 2s - loss: 0.2453 - accuracy: 0.9063 472/1875 [======>.......................] - ETA: 2s - loss: 0.2435 - accuracy: 0.9068 505/1875 [=======>......................] - ETA: 2s - loss: 0.2465 - accuracy: 0.9059 538/1875 [=======>......................] - ETA: 2s - loss: 0.2467 - accuracy: 0.9059 572/1875 [========>.....................] - ETA: 1s - loss: 0.2478 - accuracy: 0.9057 606/1875 [========>.....................] - ETA: 1s - loss: 0.2486 - accuracy: 0.9058 640/1875 [=========>....................] - ETA: 1s - loss: 0.2489 - accuracy: 0.9056 674/1875 [=========>....................] - ETA: 1s - loss: 0.2480 - accuracy: 0.9057 709/1875 [==========>...................] - ETA: 1s - loss: 0.2488 - accuracy: 0.9051 744/1875 [==========>...................] - ETA: 1s - loss: 0.2504 - accuracy: 0.9047 778/1875 [===========>..................] - ETA: 1s - loss: 0.2517 - accuracy: 0.9038 811/1875 [===========>..................] - ETA: 1s - loss: 0.2529 - accuracy: 0.9035 845/1875 [============>.................] - ETA: 1s - loss: 0.2548 - accuracy: 0.9025 878/1875 [=============>................] - ETA: 1s - loss: 0.2564 - accuracy: 0.9021 913/1875 [=============>................] - ETA: 1s - loss: 0.2570 - accuracy: 0.9019 946/1875 [==============>...............] - ETA: 1s - loss: 0.2562 - accuracy: 0.9020 980/1875 [==============>...............] - ETA: 1s - loss: 0.2557 - accuracy: 0.9020 1013/1875 [===============>..............] - ETA: 1s - loss: 0.2559 - accuracy: 0.9020 1047/1875 [===============>..............] - ETA: 1s - loss: 0.2558 - accuracy: 0.9023 1081/1875 [================>.............] - ETA: 1s - loss: 0.2556 - accuracy: 0.9024 1115/1875 [================>.............] - ETA: 1s - loss: 0.2553 - accuracy: 0.9025 1150/1875 [=================>............] - ETA: 1s - loss: 0.2555 - accuracy: 0.9027 1184/1875 [=================>............] - ETA: 1s - loss: 0.2553 - accuracy: 0.9028 1218/1875 [==================>...........] - ETA: 0s - loss: 0.2563 - accuracy: 0.9027 1252/1875 [===================>..........] - ETA: 0s - loss: 0.2568 - accuracy: 0.9024 1286/1875 [===================>..........] - ETA: 0s - loss: 0.2568 - accuracy: 0.9025 1320/1875 [====================>.........] - ETA: 0s - loss: 0.2574 - accuracy: 0.9022 1354/1875 [====================>.........] - ETA: 0s - loss: 0.2582 - accuracy: 0.9020 1388/1875 [=====================>........] - ETA: 0s - loss: 0.2585 - accuracy: 0.9019 1422/1875 [=====================>........] - ETA: 0s - loss: 0.2583 - accuracy: 0.9020 1456/1875 [======================>.......] - ETA: 0s - loss: 0.2586 - accuracy: 0.9021 1490/1875 [======================>.......] - ETA: 0s - loss: 0.2591 - accuracy: 0.9020 1524/1875 [=======================>......] - ETA: 0s - loss: 0.2594 - accuracy: 0.9020 1559/1875 [=======================>......] - ETA: 0s - loss: 0.2587 - accuracy: 0.9023 1593/1875 [========================>.....] - ETA: 0s - loss: 0.2589 - accuracy: 0.9024 1627/1875 [=========================>....] - ETA: 0s - loss: 0.2584 - accuracy: 0.9025 1660/1875 [=========================>....] - ETA: 0s - loss: 0.2592 - accuracy: 0.9024 1694/1875 [==========================>...] - ETA: 0s - loss: 0.2589 - accuracy: 0.9024 1728/1875 [==========================>...] - ETA: 0s - loss: 0.2590 - accuracy: 0.9026 1762/1875 [===========================>..] - ETA: 0s - loss: 0.2584 - accuracy: 0.9028 1796/1875 [===========================>..] - ETA: 0s - loss: 0.2584 - accuracy: 0.9029 1830/1875 [============================>.] - ETA: 0s - loss: 0.2584 - accuracy: 0.9029 1864/1875 [============================>.] - ETA: 0s - loss: 0.2583 - accuracy: 0.9030 1875/1875 [==============================] - 3s 1ms/step - loss: 0.2586 - accuracy: 0.9030 Epoch 9/10 1/1875 [..............................] - ETA: 0s - loss: 0.3450 - accuracy: 0.8438 34/1875 [..............................] - ETA: 2s - loss: 0.2340 - accuracy: 0.9044 68/1875 [>.............................] - ETA: 2s - loss: 0.2444 - accuracy: 0.9026 102/1875 [>.............................] - ETA: 2s - loss: 0.2403 - accuracy: 0.9035 135/1875 [=>............................] - ETA: 2s - loss: 0.2471 - accuracy: 0.9028 169/1875 [=>............................] - ETA: 2s - loss: 0.2429 - accuracy: 0.9050 202/1875 [==>...........................] - ETA: 2s - loss: 0.2443 - accuracy: 0.9050 236/1875 [==>...........................] - ETA: 2s - loss: 0.2478 - accuracy: 0.9032 270/1875 [===>..........................] - ETA: 2s - loss: 0.2488 - accuracy: 0.9016 304/1875 [===>..........................] - ETA: 2s - loss: 0.2432 - accuracy: 0.9052 339/1875 [====>.........................] - ETA: 2s - loss: 0.2378 - accuracy: 0.9074 374/1875 [====>.........................] - ETA: 2s - loss: 0.2377 - accuracy: 0.9080 408/1875 [=====>........................] - ETA: 2s - loss: 0.2398 - accuracy: 0.9076 442/1875 [======>.......................] - ETA: 2s - loss: 0.2391 - accuracy: 0.9085 476/1875 [======>.......................] - ETA: 2s - loss: 0.2388 - accuracy: 0.9092 511/1875 [=======>......................] - ETA: 2s - loss: 0.2392 - accuracy: 0.9100 546/1875 [=======>......................] - ETA: 1s - loss: 0.2396 - accuracy: 0.9089 580/1875 [========>.....................] - ETA: 1s - loss: 0.2389 - accuracy: 0.9095 615/1875 [========>.....................] - ETA: 1s - loss: 0.2385 - accuracy: 0.9095 649/1875 [=========>....................] - ETA: 1s - loss: 0.2407 - accuracy: 0.9092 684/1875 [=========>....................] - ETA: 1s - loss: 0.2412 - accuracy: 0.9091 719/1875 [==========>...................] - ETA: 1s - loss: 0.2398 - accuracy: 0.9092 753/1875 [===========>..................] - ETA: 1s - loss: 0.2406 - accuracy: 0.9092 787/1875 [===========>..................] - ETA: 1s - loss: 0.2404 - accuracy: 0.9095 821/1875 [============>.................] - ETA: 1s - loss: 0.2406 - accuracy: 0.9090 856/1875 [============>.................] - ETA: 1s - loss: 0.2412 - accuracy: 0.9087 890/1875 [=============>................] - ETA: 1s - loss: 0.2419 - accuracy: 0.9086 925/1875 [=============>................] - ETA: 1s - loss: 0.2424 - accuracy: 0.9085 959/1875 [==============>...............] - ETA: 1s - loss: 0.2431 - accuracy: 0.9083 993/1875 [==============>...............] - ETA: 1s - loss: 0.2424 - accuracy: 0.9087 1028/1875 [===============>..............] - ETA: 1s - loss: 0.2422 - accuracy: 0.9086 1063/1875 [================>.............] - ETA: 1s - loss: 0.2424 - accuracy: 0.9088 1098/1875 [================>.............] - ETA: 1s - loss: 0.2438 - accuracy: 0.9080 1132/1875 [=================>............] - ETA: 1s - loss: 0.2443 - accuracy: 0.9079 1166/1875 [=================>............] - ETA: 1s - loss: 0.2443 - accuracy: 0.9083 1200/1875 [==================>...........] - ETA: 0s - loss: 0.2446 - accuracy: 0.9081 1235/1875 [==================>...........] - ETA: 0s - loss: 0.2456 - accuracy: 0.9079 1269/1875 [===================>..........] - ETA: 0s - loss: 0.2450 - accuracy: 0.9081 1303/1875 [===================>..........] - ETA: 0s - loss: 0.2450 - accuracy: 0.9078 1338/1875 [====================>.........] - ETA: 0s - loss: 0.2449 - accuracy: 0.9075 1373/1875 [====================>.........] - ETA: 0s - loss: 0.2453 - accuracy: 0.9075 1408/1875 [=====================>........] - ETA: 0s - loss: 0.2454 - accuracy: 0.9075 1442/1875 [======================>.......] - ETA: 0s - loss: 0.2448 - accuracy: 0.9078 1477/1875 [======================>.......] - ETA: 0s - loss: 0.2450 - accuracy: 0.9079 1511/1875 [=======================>......] - ETA: 0s - loss: 0.2450 - accuracy: 0.9079 1545/1875 [=======================>......] - ETA: 0s - loss: 0.2454 - accuracy: 0.9075 1579/1875 [========================>.....] - ETA: 0s - loss: 0.2455 - accuracy: 0.9076 1614/1875 [========================>.....] - ETA: 0s - loss: 0.2455 - accuracy: 0.9076 1649/1875 [=========================>....] - ETA: 0s - loss: 0.2450 - accuracy: 0.9079 1684/1875 [=========================>....] - ETA: 0s - loss: 0.2451 - accuracy: 0.9080 1718/1875 [==========================>...] - ETA: 0s - loss: 0.2451 - accuracy: 0.9080 1753/1875 [===========================>..] - ETA: 0s - loss: 0.2453 - accuracy: 0.9079 1788/1875 [===========================>..] - ETA: 0s - loss: 0.2454 - accuracy: 0.9080 1823/1875 [============================>.] - ETA: 0s - loss: 0.2464 - accuracy: 0.9077 1858/1875 [============================>.] - ETA: 0s - loss: 0.2464 - accuracy: 0.9076 1875/1875 [==============================] - 3s 1ms/step - loss: 0.2468 - accuracy: 0.9074 Epoch 10/10 1/1875 [..............................] - ETA: 0s - loss: 0.2577 - accuracy: 0.9375 35/1875 [..............................] - ETA: 2s - loss: 0.2145 - accuracy: 0.9268 69/1875 [>.............................] - ETA: 2s - loss: 0.2391 - accuracy: 0.9126 103/1875 [>.............................] - ETA: 2s - loss: 0.2388 - accuracy: 0.9135 138/1875 [=>............................] - ETA: 2s - loss: 0.2377 - accuracy: 0.9139 172/1875 [=>............................] - ETA: 2s - loss: 0.2393 - accuracy: 0.9126 207/1875 [==>...........................] - ETA: 2s - loss: 0.2326 - accuracy: 0.9147 241/1875 [==>...........................] - ETA: 2s - loss: 0.2307 - accuracy: 0.9151 275/1875 [===>..........................] - ETA: 2s - loss: 0.2325 - accuracy: 0.9134 309/1875 [===>..........................] - ETA: 2s - loss: 0.2330 - accuracy: 0.9130 344/1875 [====>.........................] - ETA: 2s - loss: 0.2347 - accuracy: 0.9120 378/1875 [=====>........................] - ETA: 2s - loss: 0.2356 - accuracy: 0.9118 412/1875 [=====>........................] - ETA: 2s - loss: 0.2334 - accuracy: 0.9129 446/1875 [======>.......................] - ETA: 2s - loss: 0.2336 - accuracy: 0.9135 481/1875 [======>.......................] - ETA: 2s - loss: 0.2333 - accuracy: 0.9133 516/1875 [=======>......................] - ETA: 2s - loss: 0.2338 - accuracy: 0.9132 551/1875 [=======>......................] - ETA: 1s - loss: 0.2334 - accuracy: 0.9134 585/1875 [========>.....................] - ETA: 1s - loss: 0.2324 - accuracy: 0.9138 619/1875 [========>.....................] - ETA: 1s - loss: 0.2341 - accuracy: 0.9132 654/1875 [=========>....................] - ETA: 1s - loss: 0.2344 - accuracy: 0.9129 689/1875 [==========>...................] - ETA: 1s - loss: 0.2331 - accuracy: 0.9132 724/1875 [==========>...................] - ETA: 1s - loss: 0.2324 - accuracy: 0.9133 758/1875 [===========>..................] - ETA: 1s - loss: 0.2322 - accuracy: 0.9133 793/1875 [===========>..................] - ETA: 1s - loss: 0.2324 - accuracy: 0.9131 828/1875 [============>.................] - ETA: 1s - loss: 0.2341 - accuracy: 0.9122 862/1875 [============>.................] - ETA: 1s - loss: 0.2332 - accuracy: 0.9125 896/1875 [=============>................] - ETA: 1s - loss: 0.2343 - accuracy: 0.9119 929/1875 [=============>................] - ETA: 1s - loss: 0.2356 - accuracy: 0.9116 964/1875 [==============>...............] - ETA: 1s - loss: 0.2367 - accuracy: 0.9110 999/1875 [==============>...............] - ETA: 1s - loss: 0.2369 - accuracy: 0.9110 1033/1875 [===============>..............] - ETA: 1s - loss: 0.2358 - accuracy: 0.9112 1067/1875 [================>.............] - ETA: 1s - loss: 0.2374 - accuracy: 0.9108 1102/1875 [================>.............] - ETA: 1s - loss: 0.2363 - accuracy: 0.9113 1137/1875 [=================>............] - ETA: 1s - loss: 0.2363 - accuracy: 0.9111 1171/1875 [=================>............] - ETA: 1s - loss: 0.2377 - accuracy: 0.9107 1205/1875 [==================>...........] - ETA: 0s - loss: 0.2373 - accuracy: 0.9107 1239/1875 [==================>...........] - ETA: 0s - loss: 0.2385 - accuracy: 0.9103 1273/1875 [===================>..........] - ETA: 0s - loss: 0.2386 - accuracy: 0.9101 1308/1875 [===================>..........] - ETA: 0s - loss: 0.2377 - accuracy: 0.9105 1343/1875 [====================>.........] - ETA: 0s - loss: 0.2367 - accuracy: 0.9110 1378/1875 [=====================>........] - ETA: 0s - loss: 0.2366 - accuracy: 0.9111 1413/1875 [=====================>........] - ETA: 0s - loss: 0.2369 - accuracy: 0.9110 1447/1875 [======================>.......] - ETA: 0s - loss: 0.2368 - accuracy: 0.9110 1482/1875 [======================>.......] - ETA: 0s - loss: 0.2373 - accuracy: 0.9109 1517/1875 [=======================>......] - ETA: 0s - loss: 0.2374 - accuracy: 0.9109 1552/1875 [=======================>......] - ETA: 0s - loss: 0.2375 - accuracy: 0.9107 1586/1875 [========================>.....] - ETA: 0s - loss: 0.2378 - accuracy: 0.9107 1620/1875 [========================>.....] - ETA: 0s - loss: 0.2379 - accuracy: 0.9106 1655/1875 [=========================>....] - ETA: 0s - loss: 0.2375 - accuracy: 0.9107 1690/1875 [==========================>...] - ETA: 0s - loss: 0.2380 - accuracy: 0.9104 1724/1875 [==========================>...] - ETA: 0s - loss: 0.2383 - accuracy: 0.9104 1759/1875 [===========================>..] - ETA: 0s - loss: 0.2380 - accuracy: 0.9107 1794/1875 [===========================>..] - ETA: 0s - loss: 0.2381 - accuracy: 0.9108 1828/1875 [============================>.] - ETA: 0s - loss: 0.2388 - accuracy: 0.9106 1863/1875 [============================>.] - ETA: 0s - loss: 0.2386 - accuracy: 0.9106 1875/1875 [==============================] - 3s 1ms/step - loss: 0.2386 - accuracy: 0.9106 <tensorflow.python.keras.callbacks.History at 0x7f5516a46588>
A medida que el modelo entrena, la perdida y la exactitud son desplegadas. Este modelo alcanza una exactitud de 0.88 (o 88%) sobre el set de datos de entrenamiento.
Evaluar Exactitud
Siguente, compare como el rendimiento del modelo sobre el set de datos:
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print('\nTest accuracy:', test_acc)
313/313 - 0s - loss: 0.3350 - accuracy: 0.8840 Test accuracy: 0.8840000033378601
Resulta que la exactitud sobre el set de datos es un poco menor que la exactitud sobre el set de entrenamiento. Esta diferencia entre el entrenamiento y el test se debe a overfitting (sobre ajuste). Sobre ajuste sucede cuando un modelo de aprendizaje de maquina (ML) tiene un rendimiento peor sobre un set de datos nuevo, que nunca antes ha visto comparado con el de entrenamiento.
Hacer predicciones
Con el modelo entrenado usted puede usarlo para hacer predicciones sobre imagenes.
predictions = model.predict(test_images)
Aca, el modelo ha predecido la etiqueta para cada imagen en el set de datos de test (prueba). Miremos la primera prediccion:
predictions[0]
array([8.98017061e-06, 1.05824974e-07, 1.47653412e-09, 6.39178294e-11,
6.63487398e-08, 1.56312122e-03, 3.97483973e-07, 6.77545443e-02,
8.32966691e-08, 9.30672705e-01], dtype=float32)
una prediccion es un arreglo de 10 numeros. Estos representan el nivel de "confianza" del modelo sobre las imagenes de cada uno de los 10 articulos de moda/ropa. Ustedes pueden revisar cual tiene el nivel mas alto de confianza:
np.argmax(predictions[0])
9
Entonces,el modelo tiene mayor confianza que esta imagen es un bota de tobillo "ankle boot" o class_names[9]. Examinando las etiquetas de test o de pruebas muestra que esta clasificaion es correcta:
test_labels[0]
9
Grafique esto para poder ver todo el set de la prediccion de las 10 clases.
def plot_image(i, predictions_array, true_label, img):
predictions_array, true_label, img = predictions_array, 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, true_label[i]
plt.grid(False)
plt.xticks(range(10))
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')
Miremos la imagen [0], sus predicciones y el arreglo de predicciones. Las etiquetas de prediccion correctas estan en azul y las incorrectas estan en rojo. El numero entrega el porcentaje (sobre 100) para la etiqueta predecida.
i = 0
plt.figure(figsize=(6,3))
plt.subplot(1,2,1)
plot_image(i, predictions[i], test_labels, test_images)
plt.subplot(1,2,2)
plot_value_array(i, predictions[i], test_labels)
plt.show()

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

Vamos a graficar multiples imagenes con sus predicciones. Notese que el modelo puede estar equivocado aun cuando tiene mucha confianza.
# Plot the first X test images, their predicted labels, and the true labels.
# Color correct predictions in blue and incorrect predictions in red.
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[i], test_labels, test_images)
plt.subplot(num_rows, 2*num_cols, 2*i+2)
plot_value_array(i, predictions[i], test_labels)
plt.tight_layout()
plt.show()

Finalmente, usamos el modelo entrenado para hacer una prediccion sobre una unica imagen.
# Grab an image from the test dataset.
img = test_images[1]
print(img.shape)
(28, 28)
Los modelos de tf.keras son optimizados sobre batch o bloques,
o coleciones de ejemplos por vez.
De acuerdo a esto, aunque use una unica imagen toca agregarla a una lista:
# Add the image to a batch where it's the only member.
img = (np.expand_dims(img,0))
print(img.shape)
(1, 28, 28)
Ahora prediga la etiqueta correcta para esta imagen:
predictions_single = model.predict(img)
print(predictions_single)
[[2.7196244e-05 2.3026301e-14 9.9943405e-01 3.2361061e-10 3.3726924e-04 6.5815242e-11 2.0145018e-04 1.0427863e-13 4.7570725e-10 5.1079822e-15]]
plot_value_array(1, predictions_single[0], test_labels)
_ = plt.xticks(range(10), class_names, rotation=45)

model.predict retorna una lista de listas para cada imagen dentro del batch o bloque de datos. Tome la prediccion para nuestra unica imagen dentro del batch o bloque:
np.argmax(predictions_single[0])
2
Y el modelo predice una etiqueta de 2.
# 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.
View on TensorFlow.org
Run in Google Colab
View source on GitHub
Download notebook