MNISTを多層パーセプトロンで
去年の12月頃にもしていたけれど、Imager::AnimeFaceを作っていたときにさまざまな拡張を取り込んでいるのでそれで試した。
特徴量は、AnimeFaceと同じ(nv_face_haarlike)にした。名前はhaarlikeだけど中身は四方向面特徴を拡張したものになってる。1152次元のベクトルになる。この関数は32x32以下の画像には使用できないので、28x28の元画像に上下左右2pxずつのパディングを加えた画像に対して適用した。
環境
Windows XP, Intel Core 2 Quad Q9550
結果
中間層素子 256
98.52%
中間層素子 800
98.6%
中間層素子 2048
98.66%
感想
ほとんどの変更は高速化のためなので、速くはなっていた。中間層素子256で6万件全部使っても1エポック30秒程度だった。テストも256なら1万件に対して700msで終わっているので、1件あたり70μs程度。このおかげで2048ユニットとか無理だろって内容もごく普通に試すことができた。
中間層素子は試した限りでは増やすほどよい結果になっている。ただ識別の速度は遅くなるので、実用上は微妙な精度の差を気にするよりは速度を気にしたほうがいいと思ってる。