機械学習 名古屋 分科会 #3に行ってきた。
前回の続きだ。
今回は、第3章のニューラルネットワークをやった。
基本的には行列の掛け算と足し算で構築される。
行列の掛け算は、参考書ではnp.dot(A,B)という形で書いているが、A.dot(B)と書く方が短く書けるという。
後半部分は、既に学習済みの行列データ(重みデータ,バイアスデータ)をダウンロードして読み込んで動かすという内容なのだが、データの用意をしてなくてハンズオンでは試せなかった。
pythonのpickleという仕組みを使っていたのだが、参考書にはimportが書いてない。参考書のこのコードを動かすにはimportが必要なので注意。
講師のantimon2さんは、jullia言語を使って書くのが好きで、今回の内容もjulliaで書いたのを動かすというのを見せていた。
—
自分でもPython以外の言語でやってみようということで、C言語かC++で行列の計算を簡単にやるためのライブラリを見繕っている。
2次元配列くらいならライブラリを使わなくても自前でコードを書いてできそうな気もするのだが、複雑になってくると大変そうだ。メジャーなライブラリを使うほうがいいだろう。
Eigenというライブラリが割と定番らしい。
あと、OpenCVという画像処理ライブラリにもcv::Matという行列の処理をするクラスがある。
OpenCVは古いC言語APIばかり使っていたのだけど、C++のAPIとかクラスも勉強するのに丁度いい機会かもしれない。