Delen via


De MNIST-database met handgeschreven cijfers

De MNIST-database met handgeschreven cijfers als een trainingsset met 60.000 voorbeelden en een testset met 10.000 voorbeelden. De grootte van de cijfers is genormaliseerd en worden gecentreerd weergegeven in een afbeelding met een vaste grootte.

Notitie

Microsoft biedt Azure Open Datasets op basis van 'zoals is'. Microsoft geeft geen garanties, uitdrukkelijk of impliciet, garanties of voorwaarden met betrekking tot uw gebruik van de gegevenssets. Voor zover toegestaan volgens uw lokale wetgeving, wijst Microsoft alle aansprakelijkheid af voor eventuele schade of verliezen, waaronder directe, gevolgschade, speciale, indirecte, incidentele of strafbare gegevenssets, die het gevolg zijn van uw gebruik van de gegevenssets.

Deze gegevensset wordt geleverd onder de oorspronkelijke voorwaarden dat Microsoft de brongegevens heeft ontvangen. De gegevensset kan gegevens bevatten die afkomstig zijn van Microsoft.

Deze gegevensset is afkomstig uit de MNIST-database met handgeschreven cijfers. Het is een subset van de grotere NIST handgedrukte formulieren en tekens database gepubliceerd door National Institute of Standards and Technology.

Opslaglocatie

  • Blobaccount: azureopendatastorage
  • Containernaam: mnist

Er zijn vier bestanden direct beschikbaar in de container:

  • train-images-idx3-ubyte.gz: trainingssetafbeeldingen (9.912,422 bytes)
  • train-labels-idx1-ubyte.gz: trainingssetlabels (28.881 bytes)
  • t10k-images-idx3-ubyte.gz: test set images (1.648.877 bytes)
  • t10k-labels-idx1-ubyte.gz: testsetlabels (4.542 bytes)

Toegang tot gegevens

Azure Notebooks

Laad MNIST in een gegevensframe met behulp van tabelgegevenssets van Azure Machine Learning.

Zie Azure Machine Learning-gegevenssets maken voor meer informatie over Azure Machine Learning-gegevenssets.

Volledige gegevensset in een gegevensframe ophalen

from azureml.opendatasets import MNIST

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

Gegevensframes trainen en testen

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

Enkele afbeeldingen van de cijfers tekenen

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

Onbewerkte MNIST-bestanden downloaden of koppelen aan Azure Machine Learning-bestandsgegevenssets.

Dit werkt alleen voor Berekening op basis van Linux. Zie Azure Machine Learning-gegevenssets maken voor meer informatie over Azure Machine Learning-gegevenssets.

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

Bestanden downloaden naar lokale opslag

import os
import tempfile

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

Koppel bestanden. Handig wanneer de trainingstaak wordt uitgevoerd op een externe berekening.

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

Laad MNIST in een gegevensframe met behulp van tabelgegevenssets van Azure Machine Learning.

Zie Azure Machine Learning-gegevenssets maken voor meer informatie over Azure Machine Learning-gegevenssets.

Volledige gegevensset in een gegevensframe ophalen

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

Onbewerkte MNIST-bestanden downloaden of koppelen aan Azure Machine Learning-bestandsgegevenssets.

Dit werkt alleen voor Berekening op basis van Linux. Zie Azure Machine Learning-gegevenssets maken voor meer informatie over Azure Machine Learning-gegevenssets.

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

Bestanden downloaden naar lokale opslag

import os
import tempfile

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

Koppel bestanden. Handig wanneer de trainingstaak wordt uitgevoerd op een externe berekening.

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

Volgende stappen

Bekijk de rest van de gegevenssets in de catalogus Open Datasets.