chakokuのブログ(rev4)

日々のごった煮ブログです

NNのライブラリとしてTensorflowからKerasに変更

最初Tensorflowで俺NNを作り直そうとおもっていたけど、Tensorflowのラッパーでさらに使いやすいKerasというのがあるのを知って、どうせ他人の褌に乗っかるなら手軽な方がいいかと思い、TensorflowではなくKerasを使ってみることにした。Kerasの解説本が出たのでそれを買ってみた。

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

この本は冒頭1/4ぐらいがNNの数理的な説明、そこから半分ぐらいまでが従来(ディープでない)NNのアーキテクチャの説明、後半から隠れ層を増やした場合の誤差消失問題への対応等の説明となり、後半3/4からRNN等の説明になります。すなわち、、、目玉の一つである時系列の記事は1/3ぐらい。。とはいえ、これまでサイト上のRNNの解説とか読んで、RNNの誤差逆伝搬(時間をさかのぼって誤差が伝播される)がめちゃ大変で連鎖律で計算しても半分ぐらいしか自力で解けなかったけど、この本ではRNNの数理的な解説に加えサンプルが公開されていて、Seq2Seqの実装例も紹介されています。個人的には文書が自動で生成できたり、作曲ができたりするはずのRNNに非常に興味があるので、ぜひRNNの章を読んで自分なりに実装したい。

Kerasのインストールについて、、前回Tensorflowの環境をDocker上で構築したので、そのまま流用して、

pip install keras

でkerasをTensorflowの環境に追加した(docker startで起動するとkerasのインストールは残っているはず)。Dockerコンテナのメモリ割り当て量とかよく考えないと、デカい学習データを入れて動くのかどうかは不明。
ちなみに、、docker statsで見ると、今回作成したコンテナに対して、メモリ上限が約4Gになっている。これはホスト(VMWare上のUbuntu)のメモリサイズと等しく、メモリ制限がかかっていないか、あるいは、ホストのメモリ上限が引用されて設定されているのか。。 4GBでMNISTとか走るのだろうか。。まぁ足りなければVMWareの設定を変えればいいのだが。

root@ubuntu:~# docker stats
CONTAINER      CPU %   MEM USAGE / LIMIT      MEM %   NET I/O             BLOCK I/O             PIDS
396a555b12b9   0.01%   182.8 MiB / 3.851 GiB  4.64%   3.94 MB / 3.556 MB  4.444 MB / 434.2 kB   14

本気でDeepLearningやるなら専用のPCを買って、NVIDIA等のGPUを載せないとだめなんだろう。あるいは、AWSで時間を決めて演算させるとか。。ラズパイを何十台か買ってクラスタを構成させて並列演算させるとか。。。:-p

■ご参考URL
https://keras.io/ja/
Keral公式サイト(日本語)