Condividi tramite


Il 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 "come sono". Microsoft non offre alcuna garanzia esplicita o implicita, o condizione relativamente all'uso dei set di dati da parte dell'utente. Nella misura massima consentita dalle leggi locali, Microsoft non riconosce alcuna responsabilità relativa a danni o perdite, inclusi i danni diretti, consequenziali, speciali, indiretti, incidentali o punitivi derivanti dall'uso dei set di dati da parte dell'utente.

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 più grande database dei moduli e dei caratteri stampati a mano del NIST 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 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 set di dati tabulari di Azure Machine Learning.

Per altre informazioni sui set di dati di Azure Machine Learning, vedere Creare set di dati di 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 set di dati di file di Azure Machine Learning.

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

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 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 set di dati tabulari di Azure Machine Learning.

Per altre informazioni sui set di dati di Azure Machine Learning, vedere Creare set di dati di 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 set di dati di file di Azure Machine Learning.

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

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 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 dei set di dati aperti.