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:
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.
(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.
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.
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.
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.
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.
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.