Baza danych MNIST zawierająca ręcznie napisane cyfry

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

Firma Microsoft Azure Open Datasets na zasadzie "jak jest". Firma Microsoft nie udziela żadnych gwarancji, jawnych ani dorozumianych, ani nie udziela żadnych warunków w odniesieniu do korzystania z zestawów danych. W zakresie dozwolonym przez prawo lokalne Microsoft zrzeka się wszelkiej odpowiedzialności za wszelkie szkody lub straty, w tym szkody bezpośrednie, wynikowe, specjalne, pośrednie, pośrednie, przypadkowe lub karalne wynikające z używania 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 drukowanych ręcznie przez NIST opublikowanej 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 (9912 422 bajty)
  • train-labels-idx1-ubyte.gz: etykiety zestawu treningowego (28 881 bajtów)
  • t10k-images-idx3-ubyte.gz: obrazy zestawu testowego (1 648 877 bajtów)
  • t10k-labels-idx1-ubyte.gz: etykiety zestawu testowego (4542 bajty)

Dostęp do danych

Azure Notebooks

Załaduj dane MNIST do ramki danych przy użyciu Azure Machine Learning tabelarowych zestawów danych.

Aby uzyskać więcej informacji na Azure Machine Learning danych, zobacz Create Azure Machine Learning datasets (TworzenieAzure Machine Learning danych).

Uzyskiwanie kompletnego zestawu danych do ramki danych

from azureml.opendatasets import MNIST

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

Uzyskiwanie ramek danych treningowych i testowych

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śl kilka obrazów 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 Azure Machine Learning zestawów danych plików.

Działa to tylko w przypadku obliczeń opartych na systemie Linux. Aby uzyskać więcej informacji na Azure Machine Learning danych, zobacz Create Azure Machine Learning datasets (TworzenieAzure Machine Learning danych).

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

Zainstaluj pliki. Przydatne, gdy zadanie trenowania będzie uruchamiane na zdalnym obliczaniu.

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 dane MNIST do ramki danych przy użyciu Azure Machine Learning tabelarowych zestawów danych.

Aby uzyskać więcej informacji na Azure Machine Learning danych, zobacz Create Azure Machine Learning datasets (TworzenieAzure Machine Learning danych).

Uzyskiwanie kompletnego zestawu danych do ramki 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 Azure Machine Learning zestawów danych plików.

Działa to tylko w przypadku obliczeń opartych na systemie Linux. Aby uzyskać więcej informacji na Azure Machine Learning danych, zobacz Create Azure Machine Learning datasets (TworzenieAzure Machine Learning danych).

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)

Zainstaluj pliki. Przydatne, gdy zadanie trenowania będzie uruchamiane na zdalnym obliczaniu.

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 pozostałe zestawy danych w wykazie Open Datasets danych.