Python >> Tutoriel Python >  >> Python

Comment charger et tracer le jeu de données MNIST en Python ?

Ce didacticiel couvre l'étape de chargement du jeu de données MNIST en Python. Le jeu de données MNIST est une grande base de données de chiffres manuscrits. Il est couramment utilisé pour la formation de divers systèmes de traitement d'images.

MNIST est l'abréviation de Modified National Institute of Standards and Technology database.

Cet ensemble de données est utilisé pour entraîner des modèles à reconnaître les chiffres manuscrits. Cela a une application dans la numérisation des codes PIN manuscrits sur les lettres.

MNIST contient une collection de 70 000, 28 x 28 images de chiffres manuscrits de 0 à 9.

Pourquoi l'ensemble de données MNIST est-il si populaire ?

MNIST est populaire pour une multitude de raisons, ce sont :

  • L'ensemble de données MNSIT est accessible au public.
  • Les données nécessitent peu ou pas de traitement avant utilisation.
  • C'est un volumineux jeu de données.

De plus, cet ensemble de données est couramment utilisé dans les cours sur le traitement d'images et l'apprentissage automatique.

Charger l'ensemble de données MNIST en Python

Dans ce didacticiel, nous allons découvrir le jeu de données MNIST. Nous verrons également comment charger le jeu de données MNIST en python.

1. Chargement de l'ensemble de données en Python

Commençons par charger le jeu de données dans notre cahier python. Le moyen le plus simple de charger les données est via Keras.

from keras.datasets import mnist

L'ensemble de données MNIST se compose de données d'entraînement et de données de test. Chaque image est stockée en 28X28 et la sortie correspondante est le chiffre de l'image.

Nous pouvons le vérifier en examinant la forme des données d'entraînement et de test.

Pour charger les données dans des variables, utilisez :

(train_X, train_y), (test_X, test_y) = mnist.load_data()

Pour imprimer la forme des vecteurs d'entraînement et de test, utilisez :

print('X_train: ' + str(train_X.shape))
print('Y_train: ' + str(train_y.shape))
print('X_test:  '  + str(test_X.shape))
print('Y_test:  '  + str(test_y.shape))

Nous obtenons la sortie suivante :

X_train: (60000, 28, 28)
Y_train: (60000,)
X_test:  (10000, 28, 28)
Y_test:  (10000,)

De cela, nous pouvons conclure ce qui suit sur le jeu de données MNIST :

  • L'ensemble d'entraînement contient 60 000 images et l'ensemble de test contient 10 000 images.
  • Le vecteur d'entrée d'entraînement est de la dimension [60000 X 28 X 28].
  • Le vecteur de sortie d'entraînement est de la dimension [60000 X 1].
  • Chaque vecteur d'entrée individuel est de la dimension [28 X 28].
  • Chaque vecteur de sortie individuel est de la dimension [1] .

2. Tracer l'ensemble de données MNIST

Essayons d'afficher les images dans le jeu de données MNIST. Commencez par importer Matplotlib.

from matplotlib import pyplot

Pour tracer les données, utilisez le morceau de code suivant :

from matplotlib import pyplot
for i in range(9):	
pyplot.subplot(330 + 1 + i)
pyplot.imshow(train_X[i], cmap=pyplot.get_cmap('gray'))
pyplot.show()

La sortie sort comme :

Code complet pour charger et tracer l'ensemble de données MNIST en Python

Le code complet de ce tutoriel est donné ci-dessous :

from keras.datasets import mnist
from matplotlib import pyplot

#loading
(train_X, train_y), (test_X, test_y) = mnist.load_data()

#shape of dataset
print('X_train: ' + str(train_X.shape))
print('Y_train: ' + str(train_y.shape))
print('X_test:  '  + str(test_X.shape))
print('Y_test:  '  + str(test_y.shape))

#plotting
from matplotlib import pyplot
for i in range(9):	
pyplot.subplot(330 + 1 + i)
pyplot.imshow(train_X[i], cmap=pyplot.get_cmap('gray'))
pyplot.show()

Quelle est la prochaine ?

Maintenant que vous avez importé le jeu de données MNIST, vous pouvez l'utiliser pour la classification des images.

En ce qui concerne la tâche de classification des images, rien ne peut battre les réseaux de neurones convolutifs (CNN). CNN contient des couches de convolution, des couches de regroupement et des couches d'aplatissement .

Voyons ce que font chacune de ces couches.

1. Couche de convolution

La couche de convolution filtre l'image avec un filtre de pixels plus petit. Cela diminue la taille de l'image sans perdre la relation entre les pixels.

2. Couche de regroupement

Le travail principal de la couche de regroupement est de réduire la taille spatiale de l'image après convolution.

Une couche de regroupement réduit le nombre de paramètres en sélectionnant les valeurs maximales, moyennes ou de somme à l'intérieur des pixels.

Mise en commun maximale est la technique de mise en commun la plus couramment utilisée.

3. Couche d'aplatissement

Une couche d'aplatissement représente le vecteur de pixels multidimensionnel comme un vecteur de pixels unidimensionnel.

Conclusion

Ce tutoriel concernait le chargement de l'ensemble de données MNIST en python. Nous avons exploré l'ensemble de données MNIST et discuté brièvement des réseaux CNN pouvant être utilisés pour la classification des images sur l'ensemble de données MNIST.

Si vous souhaitez en savoir plus sur le traitement des images en Python, lisez ce didacticiel sur la façon de lire des images en Python à l'aide d'OpenCV.