MNIST-databasen med handskrivna siffror

MNIST-databasen med handskrivna siffror har en träningsuppsättning med 60 000 exempel och en testuppsättning med 10 000 exempel. Siffrorna har storleksnormaliserats och centrerats i en bild med fast storlek.

Anteckning

Microsoft tillhandahåller Azure Open Datasets i befintligt fall. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, garantier eller villkor för din användning av datauppsättningarna. I den utsträckning som tillåts enligt din lokala lag frånsäger sig Microsoft allt ansvar för eventuella skador eller förluster, inklusive direkta, följdskador, särskilda, indirekta, oförutsedda eller straffbara, till följd av din användning av datauppsättningarna.

Datamängden tillhandahålls enligt de ursprungliga villkor som gällde när Microsoft tog emot källdatan. Datamängden kan innehålla data från Microsoft.

Datamängden hämtas från MNIST DATABASE med handskrivna siffror. Det är en delmängd av den större NIST Handtryckta formulär- och teckendatabasen publicerad av National Institute of Standards and Technology.

Lagringsplats

  • Blobbkonto: azureopendatastorage
  • Containernamn: mnist

Det finns fyra filer tillgängliga i containern direkt:

  • train-images-idx3-ubyte.gz: bilder på träningsuppsättningar (9 912 422 byte)
  • train-labels-idx1-ubyte.gz: etiketter för träningsuppsättningar (28 881 byte)
  • t10k-images-idx3-ubyte.gz: testuppsättningsbilder (1 648 877 byte)
  • t10k-labels-idx1-ubyte.gz: etiketter för testuppsättningar (4 542 byte)

Dataåtkomst

Azure Notebooks

Läs in MNIST i en dataram med hjälp av tabelldatauppsättningar i Azure Machine Learning.

Mer information om Azure Machine Learning-datamängder finns i Skapa Azure Machine Learning-datamängder.

Hämta en fullständig datauppsättning till en dataram

from azureml.opendatasets import MNIST

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

Hämta ramar för tränings- och testdata

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

Rita några bilder av siffrorna

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

Ladda ned eller montera MNIST-rådatafiler för Azure Machine Learning-fildatauppsättningar.

Detta fungerar endast för Linux-baserad beräkning. Mer information om Azure Machine Learning-datamängder finns i Skapa Azure Machine Learning-datamängder.

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

Ladda ned filer till lokal lagring

import os
import tempfile

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

Montera filer. Användbart när träningsjobb körs på en fjärrberäkning.

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

Läs in MNIST i en dataram med hjälp av tabelldatauppsättningar i Azure Machine Learning.

Mer information om Azure Machine Learning-datamängder finns i Skapa Azure Machine Learning-datamängder.

Hämta en fullständig datauppsättning till en dataram

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

Ladda ned eller montera MNIST-rådatafiler för Azure Machine Learning-fildatauppsättningar.

Detta fungerar endast för Linux-baserad beräkning. Mer information om Azure Machine Learning-datamängder finns i Skapa Azure Machine Learning-datamängder.

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

Ladda ned filer till lokal lagring

import os
import tempfile

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

Montera filer. Användbart när träningsjobb körs på en fjärrberäkning.

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ästa steg

Visa resten av datauppsättningarna i katalogen Öppna datauppsättningar.