MNIST-Datenbank handschriftlicher Ziffern

Die MNIST-Datenbank handschriftlicher Ziffern verfügt über 60.000 Tranings- und 10.000 Testbeispiele. Die Größe der Ziffern wurde normalisiert, und die Ziffern wurden in einem Bild mit fester Größe zentriert.

Hinweis

Microsoft stellt Datasets der Plattform Azure Open Datasets auf einer „As is“-Basis (d. h. ohne Mängelgewähr) zur Verfügung. Microsoft übernimmt weder ausdrücklich noch stillschweigend die Gewährleistung für Ihre Nutzung der Datasets und sichert keinerlei Garantien oder Bedingungen zu. Soweit nach örtlich anwendbarem Recht zulässig, lehnt Microsoft jegliche Haftung für Schäden oder Verluste ab. Dies schließt direkte, indirekte, besondere oder zufällige Schäden oder Verluste sowie Folge- und Strafschäden und damit verbundene Verluste ein, die sich aus Ihrer Nutzung der Datasets ergeben.

Für die Bereitstellung dieses Datasets gelten die ursprünglichen Nutzungsbedingungen, unter denen Microsoft die Quelldaten bezogen hat. Das Dataset kann Daten von Microsoft enthalten.

Dieses Dataset stammt aus der MNIST-Datenbank handschriftlicher Ziffern. Es handelt sich dabei um eine Teilmenge der NIST-Datenbank handschriftlicher Formen und Zeichen, die vom National Institute of Standards and Technology veröffentlicht wird.

Speicherort

  • Blobkonto: azureopendatastorage
  • Containername: mnist

Vier Dateien finden Sie direkt im Container:

  • train-images-idx3-ubyte.gz: Trainingsbilder (9.912.422 Byte)
  • train-labels-idx1-ubyte.gz: Trainingsbezeichnungen (28.881 Byte)
  • t10k-images-idx3-ubyte.gz: Testbilder (1.648.877 Byte)
  • t10k-labels-idx1-ubyte.gz: Testbezeichnungen (4.542 Byte)

Datenzugriff

Azure Notebooks

Laden Sie MNIST mithilfe tabellarischer Datasets in Azure Machine Learning in einen Datenrahmen.

Weitere Informationen zu Azure Machine Learning-Datasets finden Sie unter Erstellen von Azure Machine Learning-Datasets.

Abrufen des vollständigen Datasets in einen Datenrahmen

from azureml.opendatasets import MNIST

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

Abrufen von Trainings- und Testdatenrahmen

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

Zeichnen einiger Bilder der Ziffern

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

Laden Sie die MNIST-Rohdateien als Azure Machine Learning-Dateidatasets herunter, oder binden Sie sie in Dateidatasets ein.

Dies funktioniert nur mit Linux-basiertem Computing. Weitere Informationen zu Azure Machine Learning-Datasets finden Sie unter Erstellen von Azure Machine Learning-Datasets.

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

Herunterladen von Dateien in den lokalen Speicher

import os
import tempfile

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

Binden Sie die Dateien ein. Nützlich, wenn der Trainingsauftrag auf einem Remotecomputer ausgeführt wird.

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

Laden Sie MNIST mithilfe tabellarischer Datasets in Azure Machine Learning in einen Datenrahmen.

Weitere Informationen zu Azure Machine Learning-Datasets finden Sie unter Erstellen von Azure Machine Learning-Datasets.

Abrufen des vollständigen Datasets in einen Datenrahmen

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

Laden Sie die MNIST-Rohdateien als Azure Machine Learning-Dateidatasets herunter, oder binden Sie sie in Dateidatasets ein.

Dies funktioniert nur mit Linux-basiertem Computing. Weitere Informationen zu Azure Machine Learning-Datasets finden Sie unter Erstellen von Azure Machine Learning-Datasets.

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

Herunterladen von Dateien in den lokalen Speicher

import os
import tempfile

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

Binden Sie die Dateien ein. Nützlich, wenn der Trainingsauftrag auf einem Remotecomputer ausgeführt wird.

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

Nächste Schritte

Machen Sie sich mit den restlichen Datasets im Open Datasets-Katalog vertraut.