kumilog.net

データ分析やプログラミングの話などを書いています。

DeepLearningのフレームワーク比較

メインコントリビューター 対応言語 Github Star*1 公開時期*2
Tensorflow Google Python, C++, Java, Go 68.9k 2015.11
Caffe カリフォルニア大学
バークレー
C, C++ 19.6k 2014.11
Caffe2 Facebook 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 Facebook 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の推移

f:id:xkumiyu:20170906232025p:plain

Tensorflowが圧倒的(Githubの中でも5番目)すぎるので、Tensorflowを除いたもの

f:id:xkumiyu:20170906232107p:plain

最新版はこちらのサイトから取得できます

結局、どれを使えばいいのか

ちゃんと扱ったことがあるのはTensorflow/KerasとChainerぐらいですが、個人的には日本製のChainerをおすすめしたいです。

  • 公式ドキュメントが(英語のみだが)しっかりしており、調べやすい
    • Pythonで書かれているので、ソースを読めばだいたい分かる
  • 実行したときに計算グラフが定義される*5ので、デバッグしやすい
  • 作っている人にイベントなどで直接質問しやすい、日本語のslackGoogleGroupsもある

ただ、やはり世界的に人気なのはTensorflowです。

  • 周辺ツールは最も豊富、ドキュメントも豊富
  • 素のTensorflowは書くの難しいが、Kerasを使えば、比較的に楽に書ける
    • Keras以外にもTensorflowベースのライブラリはたくさんある*6
  • 可視化ツールのTensorboardは素晴らしい
  • iOS, Androidなどモバイルで動いたりもする*7
  • JavaScriptでも動いたりする*8

この領域は開発スピードが早いので、どれか1つしか使えないということは避けた方がいいので、どれか1つある程度扱えるようになったら別のフレームワークをチャレンジしてみるのも良いかと思います。

似ているフレームワークも多いので、別のフレームワークの学習難易度は下がるはずです。PyTorchはChainerからforkされたものなので、似たような書き方をすると言われています。

また、DL4Jの公式ドキュメントに他のフレームワークとの比較があります。

deeplearning4j.org

*1:2017年9月上旬頃のもの

*2:正確には、はじめてGithub Starがついた月

*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, ...たくさんありすぎてよくわからん

*7:https://www.tensorflow.org/mobile/

*8:https://pair-code.github.io/deeplearnjs/