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 på "i sin"-basis. Microsoft ger inga garantier, uttryckliga eller underförstådda, avseende din användning av datamängderna. 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 skador, följdskador, särskilda, indirekta, oförutsedda eller oförutsedda skador, till följd av din användning av datamängderna.

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 handskrivna forms- och teckendatabasen som publicerats 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 med träningsuppsättning (9 912 422 byte)
  • train-labels-idx1-ubyte.gz: etiketter för träningsuppsättning (28 881 byte)
  • t10k-images-idx3-ubyte.gz: testuppsättningsbilder (1 648 877 byte)
  • t10k-labels-idx1-ubyte.gz: etiketter för testuppsättning (4 542 byte)

Dataåtkomst

Azure Notebooks

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

Mer information om hur Azure Machine Learning datauppsättningar finns i Skapa Azure Machine Learning datauppsättningar.

Hämta 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 bildrutor för att träna och testa data

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 Azure Machine Learning fildatauppsättningar.

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

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ärrbearbetning.

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 Azure Machine Learning tabelldatauppsättningar.

Mer information om hur Azure Machine Learning datauppsättningar finns i Skapa Azure Machine Learning datauppsättningar.

Hämta 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 Azure Machine Learning fildatauppsättningar.

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

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ärrbearbetning.

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 Open Datasets katalogen.