Machine Learning のコースでやったニューラルネットワークでの数字の文字認識の例を、復習がてらにHaskellで書き直してみた。 https://gist.github.com/msakai/b553004a7ca76310e11c
ただ、トレーニング用のサンプル数を増やすと、メモリの消費が凄いことになるし、サンプル数少なくても速度は出ない。
前者は自動微分のライブラリとして使っているad <http://hackage.haskell.org/package/ad> の制約で数値がboxedな表現になっていまっていることと、あとひょっとしたらadが内部で使っているデータ構造の効率の問題もあるかも(?)。
また、速度に関しては、数値がboxedな表現になってしまっていることも関係して、ベクトル化されているような数値計算ライブラリを使っていないし、そういう最適化が効きそうなコードにもできていないというのもある。
adはカッコいいのだけど、ちゃんと使おうと思うと、なかなか難しいね。