メインコントリビューター | 対応言語 | Github Star*1 | 公開時期*2 | |
---|---|---|---|---|
Tensorflow | Python, C++, Java, Go | 68.9k | 2015.11 | |
Caffe | カリフォルニア大学 バークレー校 |
C, C++ | 19.6k | 2014.11 |
Caffe2 | Python, C++ | 5.4k | 2015.12 | |
CNTK | Microsoft | Python, C++, C#, .net, BrainScript | 12k | 2016.1 |
MXNet | ワシントン大学 | Python, Scala, R, C++, Julia, Perl | 11.0k | 2015.10 |
torch7 | Facebook*3 | Lua | 7.2k | 2014.8 |
PyTorch | Python | 6.6k | 2017.1 | |
DL4J | Skymind | Java | 7.0k | 2014.8 |
theano | MILA*4 | Python | 6.8k | 2013.12 |
Chainer | Preferred Networks | Python | 2.8k | 2015.6 |
メインコントリビューターの拠点は、MILAのカナダとPreferred Networksの日本以外はすべてアメリカですね。
Github Starの推移
Tensorflowが圧倒的(Githubの中でも5番目)すぎるので、Tensorflowを除いたもの
最新版はこちらのサイトから取得できます
結局、どれを使えばいいのか
ちゃんと扱ったことがあるのはTensorflow/KerasとChainerぐらいですが、個人的には日本製のChainerをおすすめしたいです。
- 公式ドキュメントが(英語のみだが)しっかりしており、調べやすい
- Pythonで書かれているので、ソースを読めばだいたい分かる
- 実行したときに計算グラフが定義される*5ので、デバッグしやすい
- 作っている人にイベントなどで直接質問しやすい、日本語のslackやGoogleGroupsもある
ただ、やはり世界的に人気なのはTensorflowです。
- 周辺ツールは最も豊富、ドキュメントも豊富
- 素のTensorflowは書くの難しいが、Kerasを使えば、比較的に楽に書ける
- Keras以外にもTensorflowベースのライブラリはたくさんある*6
- 可視化ツールのTensorboardは素晴らしい
- iOS, Androidなどモバイルで動いたりもする*7
- JavaScriptでも動いたりする*8
この領域は開発スピードが早いので、どれか1つしか使えないということは避けた方がいいので、どれか1つある程度扱えるようになったら別のフレームワークをチャレンジしてみるのも良いかと思います。
似ているフレームワークも多いので、別のフレームワークの学習難易度は下がるはずです。PyTorchはChainerからforkされたものなので、似たような書き方をすると言われています。
また、DL4Jの公式ドキュメントに他のフレームワークとの比較があります。
*1:2017年9月上旬頃のもの
*3:http://torch.ch/whoweare.html
*4:Montreal Institute for Learning Algorithms
*5:define-by-runという、Tensorflowなどはdefine-and-runといい計算グラフの定義と実行を分けて書く
*6:TFLearn, sonnet, tf.contrib.slim, tf.layers, ...たくさんありすぎてよくわからん