База данных MNIST с рукописными цифрами

База данных образцов рукописного написания цифр MNIST содержит 60 000 образцов наборов данных для обучения и тестовый набор из 10 000 образцов. Цифры были нормализованы по размеру и расположены в центре изображения фиксированного размера.

Примечание.

Корпорация Майкрософт предоставляет Открытые наборы данных Azure как есть. Корпорация Майкрософт не предоставляет никаких гарантий (явных или подразумеваемых) и не определяет никаких условий в связи с использованием этих наборов данных. В рамках, допускаемых местным законодательством, корпорация Майкрософт отказывается от ответственности за ущерб и убытки (в том числе прямые, косвенные, специальные, опосредованные, случайные и штрафные), понесенные в результате использования вами этих наборов данных.

Этот набор данных предоставляется на тех же условиях, на которых корпорация Майкрософт получила исходные данные. Этот набор может включать данные, полученные от корпорации Майкрософт.

Набор данных получен из базы данных MNIST образцов рукописного написания цифр. Это часть большой базы данных рукописных форм и символов, опубликованной Национальным институтом стандартов и технологий США (NIST).

Расположение хранилища

  • Учетная запись хранилища BLOB-объектов: azureopendatastorage
  • Имя контейнера: mnist

В контейнере доступно 4 файла:

  • train-images-idx3-ubyte.gz: набор изображений для обучения (9 912 422 байт)
  • train-labels-idx1-ubyte.gz: набор меток для обучения (28 881 байт)
  • t10k-images-idx3-ubyte.gz: набор изображений для тестирования (1 648 877 байт)
  • t10k-labels-idx1-ubyte.gz: набор меток для тестирования (4 542 байт)

Доступ к данным

Записные книжки Azure

Загрузите MNIST в кадр данных с помощью табличных наборов данных Машинного обучения Azure.

Дополнительные сведения о наборах данных в Машинном обучении Azure см. в статье о создании наборов данных Машинного обучения Azure.

Получение полного набора данных в кадре данных

from azureml.opendatasets import MNIST

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

Получение кадров данных для обучения и тестирования

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

Вывод изображений некоторых цифр

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

Скачайте или подключите необработанные файлы MNIST наборов данных службы "Машинное обучение Azure".

Это работает только для вычислительных ресурсов на базе Linux. Дополнительные сведения о наборах данных в Машинном обучении Azure см. в статье о создании наборов данных Машинного обучения Azure.

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

Скачивание файлов в локальное хранилище

import os
import tempfile

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

Подключите файлы. Полезно при запуске задания обучения на удаленном вычислительном ресурсе.

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

Загрузите MNIST в кадр данных с помощью табличных наборов данных Машинного обучения Azure.

Дополнительные сведения о наборах данных в Машинном обучении Azure см. в статье о создании наборов данных Машинного обучения Azure.

Получение полного набора данных в кадре данных

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

Скачайте или подключите необработанные файлы MNIST наборов данных службы "Машинное обучение Azure".

Это работает только для вычислительных ресурсов на базе Linux. Дополнительные сведения о наборах данных в Машинном обучении Azure см. в статье о создании наборов данных Машинного обучения Azure.

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

Скачивание файлов в локальное хранилище

import os
import tempfile

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

Подключите файлы. Полезно при запуске задания обучения на удаленном вычислительном ресурсе.

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

Следующие шаги

Ознакомьтесь с другими наборами в каталоге Открытых наборов данных.