公開AI・機械学習のデータセット辞典:MNIST:手書き数字の画像データセットデータセット「MNIST」について説明。7万枚の手書き数字の「画像+ラベル」データが無料でダウンロードでき、画像認識などのディープラーニングに利用できる。scikit-learn、Keras/tf.keras、TensorFlow、PyTorchにおける利用コードも紹介。Burges氏によって、手書き文字データセットのNISTデータベースから抽出&加工して作成されたサブセットである)。LeCun氏らが保有するが、基本的に自由に使用できる(※MNISTデータセットを提供するリポジトリが複数存在するが、基本的にCC0ライセンスで提供されている)。MNISTに含まれる画像データセットの例MNISTは、主に画像認識を目的としたディープラーニング/機械学習の初心者向けチュートリアルでよく使われており、データがきれいに整形されているので「高い精度が出やすい」という特長がある(逆に言うと、MNISTでは精度が高すぎて、機械学習の手法間で精度を比較したい場合には使いづらいという欠点がある)。MNISTデータセット全体は、6万枚の訓練データ用(画像とラベル)1万枚のテストデータ用(画像とラベル)合計7万枚で構成される(※「ラベル」=正解を示す教師データ)。幅28×高さ28フィールド(=784フィールド)となっている(※「フィールド」=データを画像化する場合には「ピクセル」に対応する。RGBで作るグレースケールでは、0が黒で、255が白となり逆なので注意してほしい)。実際にMNISTを使うには、scikit-learn/Keras/TensorFlow/PyTorchといった各ライブラリが提供する機能を利用することをお勧めする。FORMAT」を確認してほしい)。ライブラリを使わない場合、この画像フォーマットを読み込むためのリーダーをプログラムとして作る必要がある。プログラムの作成は難しくはないが、多くの人が使うものなので、主要な機械学習&ディープラーニングのライブラリでは基本機能としてMNISTをロードする機能が含まれている。よってそのロード機能を活用して、ムダな作業を減らすことを本稿ではお勧めする。それぞれのライブラリで「どのようなコードを書くとMNISTが使えるか」の典型的なコードを簡単に示しておく(※コードの詳細は解説しない)。基本的に各ライブラリは、MNISTデータセットを自動的にダウンロードして使いやすい形にロードしてくれる機能を提供している。scikit-learnでMNISTを利用する基本的なコードsklearn.datasets.fetch_openml関数(※EXPERIMENTAL、つまり実験段階のAPI)を呼び出せばよい。mnist_784」をフェッチしている。Keras/tf.kerasでMNISTを利用する基本的なコードtf.keras.datasets.mnist.load_data関数を呼び出せばよい。Datasetsにまとめられており、tensorflow_datasetsモジュール(=tfds)のtfds.load関数から利用できる。PyTorchでMNISTを利用する基本的なコードtorchvision.datasetsクラスのコンストラクター(厳密には__init__関数)でデータセットのオブジェクトを生成してデータをダウンロードし、torch.utils.data.DataLoaderクラスのコンストラクターでデータローダーのオブジェクトを生成してデータをロードする。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。