先日のニューラルネットワークでの数字の文字認識の例のHaskellのコード、adを使うのをやめて、hmatrixを使って書きなおしてみたら、 爆速で動くようになった。

hmatrixはMatlab/Octave的な数値演算をHaskellで行うためのライブラリで、BLASやLAPACKのラッパになっている。PythonでいえばNumPyに相当するものだろう。

word2vecをHaskellに移植した人が「あまり性能が出せなくて、結局Cコードをmutableな配列を使うコードに翻訳した」と書いていたので、あまり性能でないんじゃないかと思っていたが、なかなか良いものですな。

gist (adを使ったときと同じgist)
https://gist.github.com/msakai/b553004a7ca76310e11c

hmatrix
http://hackage.haskell.org/package/hmatrix

Haskellでadを使って書きなおしたときの投稿
https://plus.google.com/+MasahiroSakai/posts/CDdTxAyVipC

word2vecのHaskell移植
https://github.com/abailly/hs-word2vec