O Banco de dados MNIST de dígitos manuscritos

O banco de dados MNIST de dígitos manuscritos tem um conjunto de treinamento com 60.000 exemplos e um conjunto de teste com 10.000 exemplos. Os dígitos foram normalizados em termos de tamanho e centralizados em uma imagem de tamanho fixo.

Observação

A Microsoft fornece o Azure Open Datasets no estado em que se encontra. A Microsoft não oferece garantias nem coberturas, expressas ou implícitas, em relação ao uso dos conjuntos de dados. Até o limite permitido pela legislação local, a Microsoft se exime de toda a obrigação por danos ou perdas, inclusive diretos, consequentes, especiais, indiretos, acidentais ou punitivos, resultantes do uso dos conjuntos de dados.

Esse conjunto de dados é fornecido de acordo com os termos originais com que a Microsoft recebeu os dados de origem. O conjunto de dados pode incluir dados originados da Microsoft.

Este conjunto de dados é originado no BANCO DE DADOS MNIST de dígitos manuscritos. É um subconjunto do maior Banco de Dados de Caracteres e Formulários Manuscritos da NIST publicado pelo Instituto Nacional de Padrões e Tecnologia.

Local de armazenamento

  • Conta de blob: azureopendatastorage
  • Nome do contêiner: mnist

Quatro arquivos estão disponíveis diretamente no contêiner:

  • train-images-idx3-ubyte.gz: imagens do conjunto de treinamento (9.912.422 bytes)
  • train-labels-idx1-ubyte.gz: rótulos do conjunto de treinamento (28.881 bytes)
  • t10k-images-idx3-ubyte.gz: imagens do conjunto de teste (1.648.877 bytes)
  • t10k-labels-idx1-ubyte.gz: rótulos do conjunto de teste (4.542 bytes)

Acesso de dados

Azure Notebooks

Carregue o MNIST em um quadro de dados usando os conjuntos de dados de tabela do Azure Machine Learning.

Para obter mais informações sobre os conjuntos de dados do Azure Machine Learning, confira Criar conjuntos de dados do Azure Machine Learning.

Obter um conjunto de dados completo em um quadro de dados

from azureml.opendatasets import MNIST

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

Obter quadros de dados de treinamento 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 gráfico de 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()

Baixe ou monte arquivos brutos do MNIST com os conjuntos de dados de arquivos do Azure Machine Learning.

Isso funciona apenas para computação no Linux. Para obter mais informações sobre os conjuntos de dados do Azure Machine Learning, confira Criar conjuntos de dados do Azure Machine Learning.

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

Baixar arquivos para o armazenamento local

import os
import tempfile

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

Montar arquivos. Útil quando o trabalho de treinamento será executado em uma computação remota.

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 em um quadro de dados usando os conjuntos de dados de tabela do Azure Machine Learning.

Para obter mais informações sobre os conjuntos de dados do Azure Machine Learning, confira Criar conjuntos de dados do Azure Machine Learning.

Obter um conjunto de dados completo em um 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))

Baixe ou monte arquivos brutos do MNIST com os conjuntos de dados de arquivos do Azure Machine Learning.

Isso funciona apenas para computação no Linux. Para obter mais informações sobre os conjuntos de dados do Azure Machine Learning, confira Criar conjuntos de dados do Azure Machine Learning.

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

Baixar arquivos para o armazenamento local

import os
import tempfile

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

Montar arquivos. Útil quando o trabalho de treinamento será executado em uma computação remota.

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

Próximas etapas

Exiba o restante dos conjuntos de dados no catálogo do Open Datasets.