深層学習の本に

出てきたデータセット達
大橋 宏正
THE MNIST DATABASE

of handwritten digits
• http://yann.lecun.com/exdb/mnist/
• 手書き文字データNISTデータセットのサブセット
• 60,000例の学習データと10,000例の評価データ、


およびそれらのラベルが存在
• サイトには既存の実験結果一覧が存在
データの入手
#!/bin/bash
# vim:fileencoding=utf-8
# wget
wget http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz
wget http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz
wget http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz
wget http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz
# gunzip
gunzip train-images-idx3-ubyte.gz
gunzip train-labels-idx1-ubyte.gz
gunzip t10k-images-idx3-ubyte.gz
gunzip t10k-labels-idx1-ubyte.gz
ラベルのフォーマット
• マジックナンバー(32bit)、画像の数(32bit)
• 数字ラベルが符号なし8bitの値として羅列
• 学習、評価ともに共通のフォーマット
• big endianで書いてある
データのフォーマット
• マジックナンバー、画像の数、行数、列数
• 全て32bit integer
• 画像のピクセル値(符号なし8bit)がrow-majorで並ぶ
• これもbig endianで書いてある
ラベル、データ共に

IDXフォーマットという形式
magic number
• MNISTの場合データタイプは

ラベル、データともに0x08なので

unsigned byte
バイト 1 2 3 4
0 0
データ

タイプ
次元数
parserを書きました
• githubに上げました
• https://github.com/wrist/IDXFileParser
scikit-learnのfetch_mldata
• mldata.orgのレポジトリに登録されている

データセットをダウンロード可能
• http://scikit-learn.org/stable/datasets/
• MNISTもこちらを使ってダウンロードした方が圧
倒的に早い
• http://mldata.org/repository/data/
viewslug/mnist-original/
fetch_mldata
In[1]: from sklearn.datasets import fetch_mldata
In[2]: mnist = fetch_mldata('MNIST original')
In[3]: mnist.data.shape
Out[3]: (70000, 784)
In[4]: mnist.target.shape
Out[4]: (70000,)
CIFER-10 データセット
• http://www.cs.toronto.edu/ kriz/cifar.html
• 10クラスに分けられた32x32のカラー画像
• 全60000枚、クラスごとに6000枚存在
• 50000の学習データと10000の評価データ
10クラス
• airplane, automobile, bird, cat, deer, dog,
frog, horse, ship, truck
pythonバージョン
• http://www.cs.toronto.edu/ kriz/cifar-10-
python.tar.gz
• matlabバージョン、binaryバージョンも存在
• pythonのpickleでシリアライズされたデータ
が存在
tar.gzの中身
• batches.meta
• data_batch_1 data_batch_2 data_batch_3
data_batch_4 data_batch_5
• test_batch
• readme.html
• 全てcPickleで読める
unpickle
• HPに記載
def unpickle(file):
import cPickle
fo = open(file, 'rb')
dict = cPickle.load(fo)
fo.close()
return dict
ざっくりとした使い方
In[1]: meta_data = unpickle( ./batches.meta")
In[2]: data_batch_1 = unpickle( ./data_batch_1")
In[3]: import matplotlib.pyplot as plt
In[4]: plt.imshow(data_batch_1[ data ][0].reshape((3, 32,
32)).transpose(1, 2, 0))
https://github.com/wrist/prml_ipynbs/blob/master/
deeplearning/CIFAR-10.ipynb
CIFAR-100 データセット
• 100クラスに分けられた32x32の画像
• 20のスーパークラスが存在
• 各クラス600枚ずつ存在
• 学習データ500枚、評価データ100枚
ILSVRC
• ImageNet Large Scale Visual Recognition
Challengeの略
• 毎年行われている画像認識のコンペ
• 2012年はDNNが圧勝
• http://image-net.org/challenges/LSVRC/
2012/

「深層学習」の本に出てきたデータセット達