A base de dados do MNIST de dígitos manuscritos

A base de dados MNIST de dígitos manuscritos tem um conjunto de preparação com 60 000 exemplos e um conjunto de testes com 10 000 exemplos. O tamanho dos dígitos foi normalizado e centrado numa imagem de tamanho fixo.

Nota

A Microsoft fornece conjuntos de dados Azure Open numa base "ase". A Microsoft não oferece garantias, expressas ou implícitas, garantias ou condições relativas à utilização dos conjuntos de dados. Na medida do permitido pela sua legislação local, a Microsoft declina toda a responsabilidade por quaisquer danos ou perdas, incluindo danos ou perdas diretas, consequentes, especiais, indiretos, incidentais ou punitivas, resultantes da utilização dos conjuntos de dados.

Este conjunto de dados é disponibilizado de acordo com os termos originais em que a Microsoft recebeu os dados de origem. O conjunto de dados pode incluir dados obtidos junto da Microsoft.

Este conjunto de dados é extraído de THE MNIST DATABASE of handwritten digits. É um subconjunto da maior base de dados de formulários e caracteres impressos à mão do NIST publicado pelo Instituto Nacional de Normas e Tecnologia.

Localização do armazenamento

  • Conta de blob: azureopendatastorage
  • Nome do contentor: mnist

Estão disponíveis quatro ficheiros no contentor diretamente:

  • train-images-idx3-ubyte.gz: imagens de conjunto de treino (9.912.422 bytes)
  • train-labels-idx1-ubyte.gz: etiquetas de conjunto de formação (28.881 bytes)
  • t10k-images-idx3-ubyte.gz: imagens de conjunto de teste (1.648.877 bytes)
  • t10k-labels-idx1-ubyte.gz: etiquetas de conjunto de ensaio (4.542 bytes)

Acesso a dados

Azure Notebooks

Carregue o MNIST num quadro de dados utilizando conjuntos de dados tabulares Azure Machine Learning.

Para obter mais informações sobre conjuntos de dados de aprendizagem automática Azure, consulte conjuntos de dados de Aprendizagem de Máquinas Azure.

Obtenha o conjunto de dados completo num quadro de dados

from azureml.opendatasets import MNIST

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

Obtenha quadros de dados de comboio e teste

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

Traçar algumas imagens dos 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()

Descarregue ou monte ficheiros crus MNIST Conjuntos de dados de ficheiros Azure Machine Learning.

Isto funciona apenas para o cálculo baseado em Linux. Para obter mais informações sobre conjuntos de dados de aprendizagem automática Azure, consulte conjuntos de dados de Aprendizagem de Máquinas Azure.

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

Descarregue ficheiros para armazenamento local

import os
import tempfile

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

Monte os ficheiros. Útil quando o trabalho de treino funcionará num cálculo 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

Carregue o MNIST num quadro de dados utilizando conjuntos de dados tabulares Azure Machine Learning.

Para obter mais informações sobre conjuntos de dados de aprendizagem automática Azure, consulte conjuntos de dados de Aprendizagem de Máquinas Azure.

Obtenha o conjunto de dados completo num quadro de dados

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

Descarregue ou monte ficheiros crus MNIST Conjuntos de dados de ficheiros Azure Machine Learning.

Isto funciona apenas para o cálculo baseado em Linux. Para obter mais informações sobre conjuntos de dados de aprendizagem automática Azure, consulte conjuntos de dados de Aprendizagem de Máquinas Azure.

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

Descarregue ficheiros para armazenamento local

import os
import tempfile

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

Monte os ficheiros. Útil quando o trabalho de treino funcionará num cálculo 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())

Passos seguintes

Ver o resto dos conjuntos de dados no catálogo Open Datasets.