Kézzel írt számjegyek MNIST-adatbázisa

A kézzel írt számjegyeket tartalmazó MNIST-adatbázis egy 60 000 példát tartalmazó betanítási készletből és egy 10 000 példát tartalmazó tesztelési készletből áll. A számjegyek egységesített méretűek és az azonos méretű képek közepére vannak rendezve.

Megjegyzés:

A Microsoft az Azure Open Datasets szolgáltatást "adott módon" biztosítja. A Microsoft nem vállal kifejezett vagy vélelmezett garanciát vagy feltételeket az adathalmazok Ön általi használatára vonatkozóan. A microsoft a helyi jogszabályok által megengedett mértékben kizár minden felelősséget az adathalmazok használatából eredő károkért vagy veszteségekért, beleértve a közvetlen, következményi, különleges, közvetett, incidenses vagy büntető jellegű károkat is.

Az adatkészletet a Microsoft forrásadataihoz tartozó eredeti feltételek szerint szolgáltatjuk. A készlet tartalmazhat Microsofttól származó adatokat.

Az adatkészlet forrása: A kézzel írt számjegyeket tartalmazó MNIST-adatbázis. Ez a Nemzeti Szabványügyi és Technológiai Intézet által közzétett, nagyobb, kézzel nyomtatott NIST-űrlapok és karakterek adatbázisának egy része.

Tárolási hely

  • Blobfiók: azureopendatastorage
  • Tároló neve: mnist

A tárolóban négy fájl érhető el közvetlenül:

  • train-images-idx3-ubyte.gz: betanítási készlet képei (9 912 422 bájt)
  • train-labels-idx1-ubyte.gz: betanítási készlet címkéi (28 881 bájt)
  • t10k-images-idx3-ubyte.gz: tesztkészlet képei (1 648 877 bájt)
  • t10k-labels-idx1-ubyte.gz: tesztkészlet címkéi (4542 bájt)

Az adatok elérése

Azure Notebooks

Az MNIST betöltése adatkeretbe az Azure Machine Tanulás táblázatos adatkészletek használatával.

Az Azure Machine Tanulás adatkészletekről további információt az Azure Machine Tanulás adatkészletek létrehozása című témakörben talál.

Teljes adatkészlet beolvasása egy adatkeretbe

from azureml.opendatasets import MNIST

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

Adatkeretek betanítása és tesztelése

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

A számjegyek néhány képének ábrázolása

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

Töltse le vagy csatlakoztassa az MNIST nyers fájljait az Azure Machine Tanulás fájladatkészletekhez.

Ez csak Linux-alapú számítás esetén működik. Az Azure Machine Tanulás adatkészletekről további információt az Azure Machine Tanulás adatkészletek létrehozása című témakörben talál.

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

Fájlok letöltése helyi tárolóba

import os
import tempfile

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

Fájlok csatlakoztatása. Hasznos, ha a betanítási feladat távoli számításon fog futni.

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

Az MNIST betöltése adatkeretbe az Azure Machine Tanulás táblázatos adatkészletek használatával.

Az Azure Machine Tanulás adatkészletekről további információt az Azure Machine Tanulás adatkészletek létrehozása című témakörben talál.

Teljes adatkészlet beolvasása egy adatkeretbe

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

Töltse le vagy csatlakoztassa az MNIST nyers fájljait az Azure Machine Tanulás fájladatkészletekhez.

Ez csak Linux-alapú számítás esetén működik. Az Azure Machine Tanulás adatkészletekről további információt az Azure Machine Tanulás adatkészletek létrehozása című témakörben talál.

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

Fájlok letöltése helyi tárolóba

import os
import tempfile

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

Fájlok csatlakoztatása. Hasznos, ha a betanítási feladat távoli számításon fog futni.

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

További lépések

Tekintse meg a többi adathalmazt az Open Datasets katalógusban.