Reconocimiento de dígitos MNIST en Python

Reconocimiento de dígitos MNIST en Python

El conjunto de datos MNIST es un conjunto de datos de imágenes de dígitos manuscritos que se utiliza comúnmente para entrenar y probar modelos de reconocimiento de imágenes. El conjunto de datos consta de 70.000 imágenes de entrenamiento y 10.000 imágenes de prueba, cada una de las cuales representa un dígito del 0 al 9.

En este tutorial, aprenderemos a construir un modelo de reconocimiento de dígitos MNIST en Python utilizando la biblioteca de aprendizaje automático Keras.

Prerrequisitos

Para este tutorial, necesitarás:

  • Un editor de texto o un IDE de Python
  • La biblioteca Keras
  • El conjunto de datos MNIST

Descargar el conjunto de datos MNIST

El conjunto de datos MNIST se puede descargar desde el sitio web del Laboratorio de Aprendizaje de Máquinas del MIT. Una vez que hayas descargado el conjunto de datos, descomprime el archivo en una carpeta en tu computadora.

Importar las bibliotecas

Para comenzar, importaremos las bibliotecas que necesitaremos:

Python
import keras
from keras.models import Sequential
from keras.layers import Dense, Flatten
from keras.datasets import mnist

Cargar el conjunto de datos

Utilizaremos la función load_data() de la biblioteca Keras para cargar el conjunto de datos MNIST. Esta función devolverá dos conjuntos de datos: un conjunto de entrenamiento y un conjunto de prueba.

Python
(x_train, y_train), (x_test, y_test) = mnist.load_data()

Preprocesar los datos

Los datos MNIST están en formato de escala de grises, con valores de píxel entre 0 y 255. Para que nuestro modelo funcione correctamente, tendremos que convertir los datos a un formato binario, con valores de píxel entre 0 y 1.

Python
x_train = x_train.astype('float32') / 255
x_test = x_test.astype('float32') / 255

Construir el modelo

Nuestro modelo constará de una sola capa oculta con 128 neuronas. La capa de salida tendrá 10 neuronas, una para cada dígito del 0 al 9.

Python
model = Sequential()
model.add(Flatten(input_shape=(28, 28)))
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))

Compilar el modelo

Antes de entrenar el modelo, tendremos que compilarlo. Esto implica especificar la función de pérdida, el optimizador y la métrica de evaluación.

Python
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

Entrenar el modelo

Entrenaremos el modelo durante 10 épocas, utilizando un tamaño de lote de 128 imágenes.

Python
model.fit(x_train, y_train, epochs=10, batch_size=128)

Evaluar el modelo

Una vez que el modelo haya terminado de entrenarse, lo evaluaremos en el conjunto de datos de prueba.

Python
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])

Resultado

En mi máquina, el modelo obtuvo una precisión de prueba del 98,2%.

Conclusión

En este tutorial, aprendimos a construir un modelo de reconocimiento de dígitos MNIST en Python utilizando la biblioteca Keras. Este modelo puede utilizarse para clasificar imágenes de dígitos manuscritos con una precisión muy alta.