Database MNIST di cifre scritte a mano

Il database MNIST di cifre scritte a mano ha un set di training di 60.000 esempi e un set di test di 10.000 esempi. Le dimensioni delle cifre sono state normalizzate e le cifre sono state inserite al centro in un'immagine di dimensioni fisse.

Nota

Microsoft fornisce set di dati aperti di Azure su base "così come è". Microsoft non garantisce, esplicitamente o implicitamente, garanzie o condizioni in relazione all'uso dei set di dati. Nella misura consentita dalla legge locale, Microsoft dichiara tutte le responsabilità per eventuali danni o perdite, tra cui diretto, consequenziale, speciale, indiretto, incidentale o incidentale, risultante dall'uso dei set di dati.

Questo set di dati viene fornito in conformità con le condizioni originali in base alle quali Microsoft ha ricevuto i dati di origine. Il set di dati potrebbe includere dati provenienti da Microsoft.

Il set di dati viene originato dal DATABASE MNIST di cifre scritte a mano. Si tratta di un sottoinsieme del più grande NIST Hand-print Forms and Characters Database pubblicato dal National Institute of Standards and Technology.

Posizione di archiviazione

  • Account BLOB: azureopendatastorage
  • Nome del contenitore: mnist

Quattro file sono disponibili direttamente nel contenitore:

  • train-images-idx3-ubyte.gz: immagini del set di training (9.912.422 byte)
  • train-labels-idx1-ubyte.gz: etichette del set di training (28.881 byte)
  • t10k-images-idx3-ubyte.gz: immagini set di test (1.648.877 byte)
  • t10k-labels-idx1-ubyte.gz: etichette set di test (4.542 byte)

Accesso ai dati

Azure Notebooks

Caricare MNIST in un frame di dati usando Azure Machine Learning set di dati tabulari.

Per altre informazioni sui set di dati Azure Machine Learning, vedere Creare set di dati Azure Machine Learning.

Ottenere un set di dati completo in un frame di dati

from azureml.opendatasets import MNIST

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

Ottenere frame di dati di training e 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

Tracciare alcune immagini delle cifre

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

Scaricare o montare file non elaborati MNIST Azure Machine Learning set di dati di file.

Questa operazione funziona solo per le risorse di calcolo basate su Linux. Per altre informazioni sui set di dati Azure Machine Learning, vedere Creare set di dati Azure Machine Learning.

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

Scaricare file nell'archiviazione locale

import os
import tempfile

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

Montare i file. Utile quando il processo di training verrà eseguito in un ambiente di calcolo 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

Caricare MNIST in un frame di dati usando Azure Machine Learning set di dati tabulari.

Per altre informazioni sui set di dati Azure Machine Learning, vedere Creare set di dati Azure Machine Learning.

Ottenere un set di dati completo in un frame di dati

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

Scaricare o montare file non elaborati MNIST Azure Machine Learning set di dati di file.

Questa operazione funziona solo per le risorse di calcolo basate su Linux. Per altre informazioni sui set di dati Azure Machine Learning, vedere Creare set di dati Azure Machine Learning.

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

Scaricare file nell'archiviazione locale

import os
import tempfile

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

Montare i file. Utile quando il processo di training verrà eseguito in un ambiente di calcolo 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())

Passaggi successivi

Visualizzare il resto dei set di dati nel catalogo Open Datasets.