『ゼロから作るDeep Learning』をScalaで実装する(その3) - ニューラルネットワークとその学習
前回から2週間以上経ちました(そして年をまたいだ)がサボっていたわけではありません。
4章まで終わりました。規模大きくなってきたのでここにコード貼ることはしません。以下をご覧ください。
以下雑感
- MNISTデータセットのロードでハマる
- numpyでは「n次元ベクトル」と「nx1行列」の違いを意識することはほとんどないが、Scala(というかBreeze)では当然異なる型になるのでいろいろ厄介
- とはいえ静的型付け言語なんだから当然
- 暗黙の型変換とかを使えばうまくできそうだが、難しいので断念
- 一貫してDenseMatrixを使う方針で
- 4章では愚直に勾配降下法で学習しているが、numpyより実装速度が遅い
- たぶん非効率な実装になってるんだろう。が、チューニングする気は特にない
今後は特にここに書くこともなさそうなので、全部読み終わって総括するまではたぶんこのシリーズは更新しないです。