Udostępnij za pośrednictwem


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

Firma Microsoft udostępnia zestawy danych Platformy Azure open na zasadzie "tak, jak to jest". Firma Microsoft nie udziela żadnych gwarancji, wyraźnych lub domniemanych, gwarancji ani warunków w odniesieniu do korzystania z zestawów danych. W zakresie dozwolonym zgodnie z prawem lokalnym firma Microsoft nie ponosi odpowiedzialności za wszelkie szkody lub straty, w tym bezpośrednie, wtórne, 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 Narodowy Instytut Standardów i Technologii.

Lokalizacja usługi Storage

  • 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 tabelarycznych zestawów danych 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.

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

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

Pobieranie lub instalowanie nieprzetworzonych plików MNIST zestawów 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 w przypadku uruchamiania zadania trenowania 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 tabelarycznych zestawów danych 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.

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

Pobieranie lub instalowanie nieprzetworzonych plików MNIST zestawów 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 w przypadku uruchamiania zadania trenowania 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 pozostałe zestawy danych w katalogu Open Datasets (Otwieranie zestawów danych).