Partilhar via


A base de dados 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 os Conjuntos de Dados Abertos do Azure "no estado em que se encontram". A Microsoft não oferece garantias, expressas ou implícitas, garantias ou condições em relação ao seu uso dos conjuntos de dados. Na medida permitida pela legislação local, a Microsoft se isenta de qualquer responsabilidade por quaisquer danos ou perdas, incluindo diretos, consequenciais, especiais, indiretos, incidentais ou punitivos, resultantes do uso dos conjuntos de dados por parte do cliente.

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 do maior banco de dados de formulários e caracteres impressos à mão do NIST, publicado pelo National Institute of Standards and Technology.

Localização de armazenamento

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

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

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

Acesso a dados

Azure Notebooks

Carregue o MNIST em um quadro de dados usando conjuntos de dados tabulares do Aprendizado de Máquina do Azure.

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

Obter 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 trem 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

Plotar 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 MNIST raw Conjuntos de dados de arquivos do Azure Machine Learning.

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

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

Baixar arquivos para armazenamento local

import os
import tempfile

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

Monte 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 conjuntos de dados tabulares do Aprendizado de Máquina do Azure.

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

Obter 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 MNIST raw Conjuntos de dados de arquivos do Azure Machine Learning.

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

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

Baixar arquivos para armazenamento local

import os
import tempfile

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

Monte 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óximos passos

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