Base de datos MNIST de dígitos manuscritos

La base de datos MNIST de dígitos manuscritos tiene un conjunto de entrenamiento de 60 000 ejemplos y un conjunto de prueba de 10 000 ejemplos. Los dígitos tienen un tamaño normalizado y están centrados en una imagen de tamaño fijo.

Nota

Microsoft proporciona Azure Open Datasets "tal cual". Microsoft no ofrece ninguna garantía, expresa o implícita, ni condición con respecto al uso que usted haga de los conjuntos de datos. En la medida en la que lo permita su legislación local, Microsoft declina toda responsabilidad por posibles daños o pérdidas, incluidos los daños directos, consecuenciales, especiales, indirectos, incidentales o punitivos, que resulten de su uso de los conjuntos de datos.

Este conjunto de datos se proporciona bajo los términos originales con los que Microsoft recibió los datos de origen. El conjunto de datos puede incluir datos procedentes de Microsoft.

La fuente de este conjunto de datos es la BASE DE DATOS MNIST de dígitos manuscritos. Es un subconjunto de la base de datos Formularios y Caracteres Impresos Manualmente de NIST que publica el Instituto Nacional de Estándares y Tecnología (NIST, por sus siglas en inglés).

Ubicación de almacenamiento

  • Cuenta de blob: azureopendatastorage
  • Nombre del contenedor: mnist

Hay cuatro archivos disponibles en el contenedor directamente:

  • train-images-idx3-ubyte.gz: training set images (9,912,422 bytes)
  • train-labels-idx1-ubyte.gz: training set labels (28,881 bytes)
  • t10k-images-idx3-ubyte.gz: test set images (1,648,877 bytes)
  • t10k-labels-idx1-ubyte.gz: test set labels (4,542 bytes)

Acceso a datos

Azure Notebooks

Cargue MNIST en una trama de datos mediante conjuntos de datos tabulares de Azure Machine Learning.

Para más información sobre los conjuntos de datos de Azure Machine Learning, consulte Creación de conjuntos de datos de Azure Machine Learning.

Obtención de un conjunto de datos completo en una trama de datos

from azureml.opendatasets import MNIST

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

Obtención de tramas de datos de entrenamiento y prueba

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

Trazado de imágenes de los dígitos

%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()

Descargue o monte archivos sin formato de MNIST de conjuntos de datos de archivos de Azure Machine Learning.

Esto solo funciona para el proceso basado en Linux. Para más información sobre los conjuntos de datos de Azure Machine Learning, consulte Creación de conjuntos de datos de Azure Machine Learning.

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

Descarga de archivos en el almacenamiento local

import os
import tempfile

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

Monte los archivos. Resulta útil cuando el trabajo de entrenamiento se va a ejecutar en un proceso remoto.

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

Cargue MNIST en una trama de datos mediante conjuntos de datos tabulares de Azure Machine Learning.

Para más información sobre los conjuntos de datos de Azure Machine Learning, consulte Creación de conjuntos de datos de Azure Machine Learning.

Obtención de un conjunto de datos completo en una trama de datos

# 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))

Descargue o monte archivos sin formato de MNIST de conjuntos de datos de archivos de Azure Machine Learning.

Esto solo funciona para el proceso basado en Linux. Para más información sobre los conjuntos de datos de Azure Machine Learning, consulte Creación de conjuntos de datos de Azure Machine Learning.

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

Descarga de archivos en el almacenamiento local

import os
import tempfile

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

Monte los archivos. Resulta útil cuando el trabajo de entrenamiento se va a ejecutar en un proceso remoto.

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())

Pasos siguientes

Consulte el resto de los conjuntos de datos en el catálogo de Open Datasets.