Partager via


La base de données MNIST de chiffres manuscrits

La base de données MNIST de chiffres manuscrits présente un ensemble d’entraînement comportant 60 000 exemples, ainsi qu’un ensemble test de 10 000 exemples. Les chiffres présentent une taille normalisée et sont centrés dans une image à taille fixe.

Notes

Microsoft fournit Azure Open Datasets « en l’état ». Microsoft n’offre aucune garantie, expresse ou implicite, ni de conditions relatives à votre utilisation des jeux de données. Dans la mesure autorisée par votre droit local, Microsoft décline toute responsabilité pour les dommages ou pertes, y compris directs, consécutifs, spéciaux, indirects ou punitifs, résultant de votre utilisation des jeux de données.

Ce jeu de données est fourni selon les conditions initiales par lesquelles Microsoft a reçu les données sources. Le jeu de données peut inclure des données provenant de Microsoft.

Ce jeu de données provient de la base de données MNIST, composée de chiffres manuscrits. Il s’agit d’un sous-ensemble de la plus grande base de données de formes et de caractères imprimés à la main du NIST publiée par le National Institute of Standards and Technology.

Emplacement de stockage

  • Compte Blob : azureopendatastorage
  • Nom du conteneur : mnist

Quatre fichiers sont disponibles dans le conteneur directement :

  • train-images-idx3-ubyte.gz : images du jeu d’entraînement (9 912 422 octets)
  • train-labels-idx1-ubyte.gz : étiquettes du jeu d’entraînement (28 881 octets)
  • t10k-images-idx3-ubyte.gz : images du jeu de tests (1 648 877 octets)
  • t10k-labels-idx1-ubyte.gz : étiquettes du jeu de tests (4 542 octets)

Accès aux données

Azure Notebooks

Chargez MNIST dans une trame de données à l’aide de jeux de données tabulaires Azure Machine Learning.

Pour plus d’informations sur les jeux de données Azure Machine Learning, consultez Créer des jeux de données Azure Machine Learning.

Charger un jeu de données complet dans une trame de données

from azureml.opendatasets import MNIST

mnist = MNIST.get_tabular_dataset()
mnist_df = mnist.to_pandas_dataframe()
mnist_df.info()

Obtenir des trames de données d’apprentissage et de test

mnist_train = MNIST.get_tabular_dataset(dataset_filter='train')
mnist_train_df = mnist_train.to_pandas_dataframe()
X_train = mnist_train_df.drop("label", axis=1).astype(int).values/255.0
y_train = mnist_train_df.filter(items=["label"]).astype(int).values

mnist_test = MNIST.get_tabular_dataset(dataset_filter='test')
mnist_test_df = mnist_test.to_pandas_dataframe()
X_test = mnist_test_df.drop("label", axis=1).astype(int).values/255.0
y_test = mnist_test_df.filter(items=["label"]).astype(int).values

Tracer certaines images des chiffres

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

# now let's show some randomly chosen images from the traininng set.
count = 0
sample_size = 30
plt.figure(figsize=(16, 6))
for i in np.random.permutation(X_train.shape[0])[:sample_size]:
    count = count + 1
    plt.subplot(1, sample_size, count)
    plt.axhline('')
    plt.axvline('')
    plt.text(x=10, y=-10, s=y_train[i], fontsize=18)
    plt.imshow(X_train[i].reshape(28, 28), cmap=plt.cm.Greys)
plt.show()

Téléchargez ou montez des fichiers bruts MNIST dans des jeux de données de fichier Azure Machine Learning.

Cela fonctionne uniquement pour les calculs basés sur Linux. Pour plus d’informations sur les jeux de données Azure Machine Learning, consultez Créer des jeux de données Azure Machine Learning.

mnist_file = MNIST.get_file_dataset()
mnist_file
mnist_file.to_path()

Télécharger des fichiers vers le stockage local

import os
import tempfile

data_folder = tempfile.mkdtemp()
data_paths = mnist_file.download(data_folder, overwrite=True)
data_paths

Montez les fichiers. Utile lorsque le travail d’apprentissage s’exécute sur un calcul distant.

import gzip
import struct
import pandas as pd
import numpy as np

# load compressed MNIST gz files and return pandas dataframe of numpy arrays
def load_data(filename, label=False):
    with gzip.open(filename) as gz:
        gz.read(4)
        n_items = struct.unpack('>I', gz.read(4))
        if not label:
            n_rows = struct.unpack('>I', gz.read(4))[0]
            n_cols = struct.unpack('>I', gz.read(4))[0]
            res = np.frombuffer(gz.read(n_items[0] * n_rows * n_cols), dtype=np.uint8)
            res = res.reshape(n_items[0], n_rows * n_cols)
        else:
            res = np.frombuffer(gz.read(n_items[0]), dtype=np.uint8)
            res = res.reshape(n_items[0], 1)
    return pd.DataFrame(res)
import sys
mount_point = tempfile.mkdtemp()
print(mount_point)
print(os.path.exists(mount_point))

if sys.platform == 'linux':
  print("start mounting....")
  with mnist_file.mount(mount_point):
    print("list dir...")
    print(os.listdir(mount_point))
    print("get the dataframe info of mounted data...")
    train_images_df = load_data(next(path for path in data_paths if path.endswith("train-images-idx3-ubyte.gz")))
    print(train_images_df.info())

Azure Databricks

Chargez MNIST dans une trame de données à l’aide de jeux de données tabulaires Azure Machine Learning.

Pour plus d’informations sur les jeux de données Azure Machine Learning, consultez Créer des jeux de données Azure Machine Learning.

Charger un jeu de données complet dans une trame de données

# This is a package in preview.
from azureml.opendatasets import MNIST

mnist = MNIST.get_tabular_dataset()
mnist_df = mnist.to_spark_dataframe()
display(mnist_df.limit(5))

Téléchargez ou montez des fichiers bruts MNIST dans des jeux de données de fichier Azure Machine Learning.

Cela fonctionne uniquement pour les calculs basés sur Linux. Pour plus d’informations sur les jeux de données Azure Machine Learning, consultez Créer des jeux de données Azure Machine Learning.

mnist_file = MNIST.get_file_dataset()
mnist_file
mnist_file.to_path()

Télécharger des fichiers vers le stockage local

import os
import tempfile

mount_point = tempfile.mkdtemp()
mnist_file.download(mount_point, overwrite=True)

Montez les fichiers. Utile lorsque le travail d’apprentissage s’exécute sur un calcul distant.

import gzip
import struct
import pandas as pd
import numpy as np

# load compressed MNIST gz files and return numpy arrays
def load_data(filename, label=False):
    with gzip.open(filename) as gz:
        gz.read(4)
        n_items = struct.unpack('>I', gz.read(4))
        if not label:
            n_rows = struct.unpack('>I', gz.read(4))[0]
            n_cols = struct.unpack('>I', gz.read(4))[0]
            res = np.frombuffer(gz.read(n_items[0] * n_rows * n_cols), dtype=np.uint8)
            res = res.reshape(n_items[0], n_rows * n_cols)
        else:
            res = np.frombuffer(gz.read(n_items[0]), dtype=np.uint8)
            res = res.reshape(n_items[0], 1)
    return pd.DataFrame(res)
import sys
mount_point = tempfile.mkdtemp()
print(mount_point)
print(os.path.exists(mount_point))
print(os.listdir(mount_point))

if sys.platform == 'linux':
  print("start mounting....")
  with mnist_file.mount(mount_point):
    print(context.mount_point )
    print(os.listdir(mount_point))  
    train_images_df = load_data(os.path.join(mount_point, 'train-images-idx3-ubyte.gz'))
    print(train_images_df.info())

Étapes suivantes

Consultez les autres jeux de données du catalogue Open Datasets.