FaxOCR を CNN でやってみた

Apr 13, 2016   #Python  #機械学習 

せっかくKerasを使ってみたのでCNNもやってみたいということで、
FaxOCRというMNISTと同形式のデータセットで手書き文字認識をやってみました。
ソースコードはここにあります。

このデータセットではtrain setがかなり小さいので、
まず最初に適当に拡大縮小や回転をして画像データの枚数を11倍に(1枚から10枚生成)しました。

CNNのアーキテクチャはtoshi-kさんのコードを参考にして適当に設定しました。
ただ、データセットが小さくて過学習してしまいそうだなーと思ったので、
上記のものに比べて小さいネットワークになっています。

入力したテンソルがどの時点でどのサイズになっているか確認する方法がわからなかったので、
ZeroPaddingなどがこれでうまくいっているのかわかりませんが、
入力(1, 28, 28) -> (64, 12, 12) -> (64, 12, 12) -> (256, 10, 10) -> (128) -> (10)出力
という形になっていると嬉しいなくらいの感じで書いています。
こういう風にデバッグする方法が知りたい……

結果は次の通りです。

dataset 正答率
train 99.5%
valid 99.1%
test 93.1%

増やしたデータセットのうち90%をtrain、10%をvalidとし、
trainで訓練してvalidが最も高くなるところで止まるようになっています。
もとのデータセット全部をtrainにしてtestが高くなるところで止めるともう少し精度が上がります。(これ)

GPUマシンを持っていないので学習に時間がかかりすぎりてあんまり色々試せない……

[追記]
データセットのバージョンはfaxocr-numbers-20160411c.zipのものです。

このエントリーをはてなブックマークに追加