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 fa alcuna garanzia, espressa o implicita, garanzie o condizioni in relazione all'uso dei set di dati. Nella misura consentita dalla legge locale, Microsoft rilasci tutte le responsabilità per eventuali danni o perdite, inclusi diretti, consequenziali, speciali, indiretti, incidentali o punitivi, derivanti 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 subset del database di moduli e caratteri stampati a mano NIST più grande pubblicato da 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 del set di test (1.648.877 byte)
  • t10k-labels-idx1-ubyte.gz: etichette del 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 Azure Machine Learning, vedere Creare Azure Machine Learning set di dati.

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 il calcolo basato su Linux. Per altre informazioni sui set Azure Machine Learning, vedere Creare Azure Machine Learning set di dati.

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

Scaricare i 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 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 Azure Machine Learning, vedere Creare Azure Machine Learning set di dati.

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 il calcolo basato su Linux. Per altre informazioni sui set Azure Machine Learning, vedere Creare Azure Machine Learning set di dati.

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

Scaricare i 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 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 gli altri set di dati nel catalogo Apri set di dati.