Deep learning × Python

今更ではありますが、今年のPythonキーワードの中で外すことはできないのではないでしょうか？
というわけで今年を振り返ってお世話になったDeepLearning系Pythonライブラリを紹介したいと思います。

## [Keras](https://keras.io/ja/)
[chainer](http://chainer.org/), [tensorflow](https://www.tensorflow.org/), [mxnet](http://mxnet.io/)などいろいろなフレームワークが出てますが、単純にGithubのスター数でみると次の順で人気なようです。(12月25日現在)

1. tensorflow(40959)
2. keras(10509)
3. mxnet(7288)
4. chainer(1910)

tensorflow大人気なのが分かりますね。kerasはコード行数が少なくて済むので好きなのですが、[tensorflow-slim](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/slim)なども出てきて、今後もtensorflowベースでより簡単に書けるライブラリが出てきそうです。

## [keras-rl](https://github.com/matthiasplappert/keras-rl)
kerasを使ったDeep Reinforcement Learingのライブラリです。[OpenAI Gym](https://gym.openai.com/)の環境に対応しています。
以下の基本的な深層強化学習のアルゴリズムが実装されています。

* [DQN](https://deepmind.com/research/dqn/)
* [CEM](http://nipg.inf.elte.hu/publications/szita06learning.pdf)
* [DDPG](https://arxiv.org/pdf/1509.02971v5.pdf)

Kerasには他にも[kerlym](https://github.com/osh/kerlym)というOpenAI Gymに対応した深層強化学習ライブラリもあります。
tensorflowベースのライブラリでは[rllab](https://rllab.readthedocs.io/en/latest/)というのがあります。こちらはOpenAIが作っていて、規模も大きく、実装されているアルゴリズムが上のものに加えてさらに以下のものがあります。

* [Trust Region Policy Optimization](https://arxiv.org/pdf/1502.05477.pdf)
* CMA-ES
* Truncated Natural Policy Gradient
* [Reward-Weighted Regression](http://machinelearning.org/proceedings/icml2007/papers/98.pdf)
* [Relative Entropy Policy Search](http://is.tuebingen.mpg.de/fileadmin/user_upload/files/publications/AAAI-2010-Peters_6439[0].pdf)

いろいろこっちも良さそうなのですが、keras-rlのほうがシンプルなのでそっちを使ってます。

## [keras-resnet](https://github.com/raghakot/keras-resnet)
[Resnet](https://arxiv.org/pdf/1512.03385v1.pdf)はネットワークの層を飛躍的に増やすことを可能にしました。Githubをでもかなりたくさんの方が実装しています。kerasに限らず主な実装を上げておきます。

* [tensorflow-resnet](https://github.com/ry/tensorflow-resnet)
* [ResNet(mxnet)](https://github.com/tornadomeet/ResNet)
* [chainer-cifar10](https://github.com/mitmul/chainer-cifar10)
* [chainer-ResNet](https://github.com/yasunorikudo/chainer-ResNet)

## GAN
GANも流行りました。次から次へと新しいGANが提案されてはGithubですぐに実装されるという感じで、すごい競争激しいです。

* [StackGAN](https://github.com/hanzhanggit/StackGAN)
* [InfoGAN](https://github.com/openai/InfoGAN)
* [SRGAN](https://github.com/buriburisuri/SRGAN)

KerasのGAN専用ライブラリもありました。
GAN用のモデル定義や学習方法がやりやすくなっているようです。

* [keras-adversarial](https://github.com/bstriner/keras-adversarial)

## [quiver](https://github.com/jakebian/quiver)
学習結果などの描画ツールもいろいろ出てます。quiverはKerasでConvnetの描画を行ってくれます。

![quiver](https://cloud.githubusercontent.com/assets/5866348/20253975/f3d56f14-a9e4-11e6-9693-9873a18df5d3.gif)

その他描画ツールです。

* [hera](https://github.com/jakebian/hera)

![hera](https://camo.githubusercontent.com/08bed4fd4481e7782bb0e9ace54bc152585fccef/68747470733a2f2f6a2e676966732e636f6d2f336c4f3337702e676966)

* [hualos](https://github.com/fchollet/hualos)

# その他
個人的にKeras好きなので、Kerasまわりで気になるツールを集めました。

* [keras-js](https://github.com/transcranial/keras-js)
Javascript用のKerasです。
* [keras-resources](https://github.com/fchollet/keras-resources)
Kerasに関連することを集めています。かなりお世話になってます。
* [elephas](https://github.com/maxpumperla/elephas)
Kerasで複数のPCを使って、Distributed Deep Learningを行うことができます。
* [hyperas](https://github.com/maxpumperla/hyperas)
Keras用ハイパーパラメータの最適化です。
* [seya](https://github.com/EderSantana/seya)
Kerasをパワーアップさせます。聖闘士星矢の星矢らしいです。