2015年9月18日金曜日

MNISTの解凍済みデータ

ディープラーニングとかで話題のニューラルネットワーク。
このニューラルネットワークの代表的な応用例として、手書き文字の認識というのがあります。

これはその名のとおり、お絵かきツールなどでフリーハンドで書いた数字が、0から9のどれにあたるのかを判定するものです。


ニューラルネットの練習としてこの手書き文字(数字)認識を実装してみようとすると、訓練データが必要となります。この訓練データはまじめに用意しようとすると大変なんですが、幸いなことにMNISTにデータが公開されています。

ただし、このデータはIDX file formatというフォーマットで圧縮されているために、そのままでは利用できません。

その場合は、下記のような方法でデータを利用することができます。

Nodejs

mnistというnodejsのアプリを使うと、json形式の訓練データとテストデータを取得することができます。取得自体にはnodejsが必要ですが、テキスト形式で取得できるので、その後どんな言語にでも利用することができます。jsonで取得できるのはうれしいですが、nodejsの環境が手元にないと使えないところが少々不便。

Python

deeplearning.netにPickle形式のデータが公開されています。pythonでサンプルを書こうと思ってる方はこちらのほうが手っ取り早いでしょう。


しかし、IDXフォーマットとか非常に面倒ですね。データ圧縮率とか優れているのかも知れませんが、普通にzipとかにしてもいまどき大して困らなかった気がするんですが。理論上の性能を追い求めるあまり、利便性を犠牲にしている気がします。