Baza danych MNIST cyfr odręcznych

Baza danych napisanych odręcznie cyfr MNIST obejmuje zestaw treningowy zawierający 60 000 przykładów oraz zestaw testowy zawierający 10 000 przykładów. Cyfry zostały znormalizowane pod względem rozmiaru i wyśrodkowane na obrazie o stałym rozmiarze.

Uwaga

Microsoft udostępnia zestawy danych Usługi Azure Open na zasadzie "tak, jak to jest". Microsoft nie udziela żadnych gwarancji, wyraźnych ani domniemanych, gwarancji ani warunków w odniesieniu do korzystania z zestawów danych. W zakresie dozwolonym zgodnie z prawem lokalnym Microsoft nie ponosi odpowiedzialności za wszelkie szkody lub straty, w tym bezpośrednie, wynikowe, specjalne, pośrednie, przypadkowe lub karne wynikające z korzystania z zestawów danych.

Zestaw danych jest udostępniany zgodnie z pierwotnymi warunkami, na jakich firma Microsoft otrzymała dane źródłowe. Zestaw danych może zawierać dane pozyskane z firmy Microsoft.

Ten zestaw danych pochodzi z bazy danych napisanych odręcznie cyfr MNIST. Jest to podzbiór większej bazy danych formularzy i znaków NIST opublikowanych przez National Institute of Standards and Technology.

Lokalizacja magazynu

  • Konto blob: azureopendatastorage
  • Nazwa kontenera: mnist

Bezpośrednio w kontenerze znajdują się cztery pliki:

  • train-images-idx3-ubyte.gz: obrazy zestawu treningowego (9 912 422 bajty)
  • train-labels-idx1-ubyte.gz: etykiety zestawu treningowego (28 881 bajtów)
  • t10k-images-idx3-ubyte.gz: obrazy zestawu testów (1,648 877 bajtów)
  • t10k-labels-idx1-ubyte.gz: etykiety zestawu testów (4542 bajty)

Dostęp do danych

Azure Notebooks

Załaduj aplikację MNIST do ramki danych przy użyciu zestawów danych tabelarycznych usługi Azure Machine Learning.

Aby uzyskać więcej informacji na temat zestawów danych usługi Azure Machine Learning, zobacz Tworzenie zestawów danych usługi Azure Machine Learning.

Uzyskiwanie kompletnego zestawu danych w ramce danych

from azureml.opendatasets import MNIST

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

Pobieranie ramek danych trenowania i testowania

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

Wykreślij niektóre obrazy cyfr

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

Pobierz lub zainstaluj nieprzetworzone pliki MNIST zestawy danych plików usługi Azure Machine Learning.

Działa to tylko w przypadku obliczeń opartych na systemie Linux. Aby uzyskać więcej informacji na temat zestawów danych usługi Azure Machine Learning, zobacz Tworzenie zestawów danych usługi Azure Machine Learning.

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

Pobieranie plików do magazynu lokalnego

import os
import tempfile

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

Instalowanie plików. Przydatne, gdy zadanie trenowania zostanie uruchomione w zdalnym środowisku obliczeniowym.

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

Załaduj aplikację MNIST do ramki danych przy użyciu zestawów danych tabelarycznych usługi Azure Machine Learning.

Aby uzyskać więcej informacji na temat zestawów danych usługi Azure Machine Learning, zobacz Tworzenie zestawów danych usługi Azure Machine Learning.

Uzyskiwanie kompletnego zestawu danych w ramce danych

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

Pobierz lub zainstaluj nieprzetworzone pliki MNIST zestawy danych plików usługi Azure Machine Learning.

Działa to tylko w przypadku obliczeń opartych na systemie Linux. Aby uzyskać więcej informacji na temat zestawów danych usługi Azure Machine Learning, zobacz Tworzenie zestawów danych usługi Azure Machine Learning.

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

Pobieranie plików do magazynu lokalnego

import os
import tempfile

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

Instalowanie plików. Przydatne, gdy zadanie trenowania zostanie uruchomione w zdalnym środowisku obliczeniowym.

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

Następne kroki

Wyświetl resztę zestawów danych w katalogu Open Datasets (Otwarte zestawy danych).