『ゼロから作るDeep Learning』をScalaで実装する(その3) - ニューラルネットワークとその学習

前回から2週間以上経ちました(そして年をまたいだ)がサボっていたわけではありません。

4章まで終わりました。規模大きくなってきたのでここにコード貼ることはしません。以下をご覧ください。

github.com

以下雑感

  • MNISTデータセットのロードでハマる
  • numpyでは「n次元ベクトル」と「nx1行列」の違いを意識することはほとんどないが、Scala(というかBreeze)では当然異なる型になるのでいろいろ厄介
    • とはいえ静的型付け言語なんだから当然
    • 暗黙の型変換とかを使えばうまくできそうだが、難しいので断念
    • 一貫してDenseMatrixを使う方針で
  • 4章では愚直に勾配降下法で学習しているが、numpyより実装速度が遅い
    • たぶん非効率な実装になってるんだろう。が、チューニングする気は特にない

今後は特にここに書くこともなさそうなので、全部読み終わって総括するまではたぶんこのシリーズは更新しないです。