深層学習フレームワークヒッチハイクガイドVer4.0

注意：私は深層学習の専門家ではなくチュートリアルをいくつか動かした程度の初心者です。深層学習のフレームワークについてまとめ記事がかなりあるのですが、情報が古かったり私が知りたいことがなかったりして、自分が知りたいことをまとめました。定期的に更新しています。

# 深層学習のフレームワーク
|Framework	|Developer	|License	|Language	|動作環境	|Feature	|Qiitaでのタグ付き解説記事(記事数は2016/10/15)|2017/07/17|2018/02/12|2020/02/23|
|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|
|[TensorFlow](https://www.tensorflow.org/)|Google|[Apache License 2.0](https://github.com/tensorflow/tensorflow/blob/master/LICENSE)|Python, [R Interface to TensorFlow](https://tensorflow.rstudio.com/)|		|研究成果、ドキュメント量、関連書籍とも独走状態。[A Neural Network Playground - TensorFlow](http://playground.tensorflow.org/)でWEB上で、どんな動作をするかが簡単に試せる。|445記事|[1,031記事](http://qiita.com/tags/TensorFlow)|[1,445記事](http://qiita.com/tags/TensorFlow)|[2,917記事](http://qiita.com/tags/TensorFlow)|
|[Keras](https://keras.io/ja/)|		|[MIT License](https://github.com/fchollet/keras/blob/master/LICENSE)|Python, R||TensorFlow, Theanoを裏で動かすための記述を簡単にしたライブラリ。Cognitive Tool Kitにも対応した。本家サイトに日本語ページあり。|34記事|[250記事](http://qiita.com/tags/Keras)|[475記事](http://qiita.com/tags/Keras)|[1,619記事](http://qiita.com/tags/Keras)|
|[PyTorch](https://pytorch.org/)|Pytorch.org|修正BSD|Python||TorchのPython移行とともにCaffe2を統合するなどして一気に急進||||[573記事](https://qiita.com/tags/pytorch)|
|[Torch](http://torch.ch/)|Facebook||Lua|||7記事|[35記事](http://qiita.com/tags/Torch)|[35記事](http://qiita.com/tags/Torch)|[38記事](http://qiita.com/tags/Torch)|
|[Theano](http://deeplearning.net/software/theano/)|		|[License](http://deeplearning.net/software/theano/LICENSE.html)|Python|		|		|32記事|[40記事](http://qiita.com/tags/Theano)|[48記事](http://qiita.com/tags/Theano)|[54記事](http://qiita.com/tags/Theano)|
|[Darknet](http://pjreddie.com/darknet/)|		|		|C		|		||1記事|[10記事](http://qiita.com/tags/darknet)|[15記事](http://qiita.com/tags/darknet)|[53記事](http://qiita.com/tags/darknet)|
|[Neural Network Libraries](https://nnabla.org/ja/) / [Neural Network Console](https://dl.sony.com/ja/)|Sony|[Apache License 2.0](http://nnabla.readthedocs.io/en/latest/license.html)|Python, C++, GUI||2017/06/27公開 Neural Network Console はGUI操作で深層学習のネットワーク構築から実行まで可能。|-|[タグなし記事が1記事のみ](http://qiita.com/search?utf8=%E2%9C%93&sort=rel&q=%22Neural+Network+Libraries%22)|[タグなし"Neural Network Libraries"で4記事のみ](http://qiita.com/search?utf8=%E2%9C%93&sort=rel&q=%22Neural+Network+Libraries%22) [タグなし"Neural Network Console"で14記事](https://qiita.com/search?utf8=%E2%9C%93&sort=rel&q=%22Neural+Network+Console%22)|neuralnetworkconsole [34記事](https://qiita.com/tags/neuralnetworkconsole)|
|[MXNet](https://mxnet.apache.org/)|Apache|[Apache License 2.0](https://github.com/dmlc/mxnet/blob/master/LICENSE)|C++, Python, R, Scala, Julia, Matlab, and Javascript|		|		|2記事|[14記事](http://qiita.com/tags/MXNet)|[21記事](http://qiita.com/tags/MXNet)|[28記事](http://qiita.com/tags/MXNet)|
|[Deeplearning4j](https://deeplearning4j.org/)|		|[Apache 2.0 License](https://deeplearning4j.org/)|Java|	|解説本『<a  href="https://www.amazon.co.jp/gp/product/4844381288/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4844381288&linkCode=as2&tag=aokikenichi-22">Deep Learning Javaプログラミング 深層学習の理論と実装 (impress top gear)</a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=aokikenichi-22&l=as2&o=9&a=4844381288" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』|11記事|[15記事](http://qiita.com/tags/deeplearning4j)|[15記事](http://qiita.com/tags/deeplearning4j)|[20記事](http://qiita.com/tags/deeplearning4j)|
|[H2O](http://www.h2o.ai/)|		|		|Python, R|		|		|httpサーバーのH2Oについての記事が混在し不明|||[12記事](https://qiita.com/tags/h2o.ai)|
|[Sonnet](https://github.com/deepmind/sonnet)|DeepMind|[Apache License 2.0](https://github.com/deepmind/sonnet/blob/master/LICENSE)|Python||TensorFlowのラッパー|-|[4記事](http://qiita.com/tags/Sonnet)|[7記事](http://qiita.com/tags/Sonnet)|[8記事](http://qiita.com/tags/Sonnet)|
|[ReNom](http://www.renom.jp/)|[GRID](http://www.gridpredict.jp/)|[ReNom Subscription Agreement Ver. 1.0](http://www.renom.jp/rsts/license.html#renom-subscription-agreement-ver-1-0)|Python||日本発|-|-|[タグなし記事が3記事](https://qiita.com/search?q=ReNom)|[6記事](https://qiita.com/tags/renom)|
|[DyNet](https://github.com/clab/dynet)|カーネギーメロン大|[Apache License 2.0](https://github.com/clab/dynet/blob/master/LICENSE.txt)|Python, C++|||-|[1記事](http://qiita.com/tags/DyNet)|[1記事](http://qiita.com/tags/DyNet)|[1記事](http://qiita.com/tags/DyNet)|
|on Spark|
|[TensorFlowOnSpark](https://github.com/yahoo/TensorFlowOnSpark)|Yahoo|[Apache License 2.0](https://github.com/yahoo/TensorFlowOnSpark/blob/master/LICENSE)||||-|[タグなし記事が4記事](http://qiita.com/search?utf8=%E2%9C%93&sort=rel&q=TensorFlowOnSpark)|[タグなし記事が5記事](http://qiita.com/search?utf8=%E2%9C%93&sort=rel&q=TensorFlowOnSpark)|[1記事](https://qiita.com/tags/tensorflowonspark)|

## 2年以上更新なし

|Framework	|Developer	|License	|Language	|動作環境	|Feature	|Qiitaでのタグ付き解説記事(記事数は2016/10/15)|2017/07/17|2018/02/12|2020/02/23|
|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|
|[Cognitive Tool Kit](https://www.microsoft.com/en-us/cognitive-toolkit/)|Microsoft|[License](https://github.com/Microsoft/CNTK/blob/master/LICENSE.md)|C++, C#/.NET, Python, Java||2017年以降更新がない。[CNTK](https://github.com/Microsoft/CNTK)がバージョンアップとともに改名した。Kerasに対応|CNTKとして1記事|CNTKとして[9記事](http://qiita.com/tags/CNTK)|CNTKとして[42記事](http://qiita.com/tags/CNTK)|CNTKとして[73記事](http://qiita.com/tags/CNTK)|
|[DSSTNE](https://github.com/amzn/amazon-dsstne)|Amazon|[Apache License 2.0](https://github.com/amznlabs/amazon-dsstne/blob/master/LICENSE)|||Amazonはmxnetを採用とのこと。Githubのページも17ヶ月以上更新がなく、なくなっていくと思われる|4記事|[4記事](http://qiita.com/tags/dsstne)|[4記事](http://qiita.com/tags/dsstne)|[4記事](http://qiita.com/tags/dsstne)|
|[Deel](https://github.com/uei/deel)|[株式会社UEI](http://www.uei.co.jp/)|[MIT License](https://github.com/uei/deel/blob/master/LICENSE)|Python|		|		|Deelタグなし記事が1記事のみ|[2記事](http://qiita.com/tags/Deel)|[2記事](http://qiita.com/tags/Deel)|[2記事](http://qiita.com/tags/Deel)|

## 開発停止

|Framework	|Developer	|License	|Language	|動作環境	|Feature	|Qiitaでのタグ付き解説記事(記事数は2016/10/15)|2017/07/17|2018/02/12|2020/02/23|
|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|
|[Chainer](http://chainer.org/)|Preferred Infrastructure, Inc. Preferred Networks, Inc.|[License](https://github.com/pfnet/chainer/blob/master/LICENSE)|Python		|		|解説本『<a  href="https://www.amazon.co.jp/gp/product/4274219348/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4274219348&linkCode=as2&tag=aokikenichi-22">Chainerによる実践深層学習</a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=aokikenichi-22&l=as2&o=9&a=4274219348" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』があり、日本発なこともあり日本ではかなり勢いがあると思う。<br/>Caffeで作ったモデルを読み込める。<br/>[Chainer Playground β](https://play.chainer.org/)ができた。|238記事|[414記事](http://qiita.com/tags/Chainer)|[536記事](http://qiita.com/tags/Chainer)|[871記事](http://qiita.com/tags/Chainer)|
|[Caffe](http://caffe.berkeleyvision.org/)|[Berkeley Vision and Learning Center](http://bvlc.eecs.berkeley.edu/)|[BSD 2-Clause license](https://github.com/BVLC/caffe/blob/master/LICENSE)|Python, C++|		|PyTorchに統合され開発停止|63記事|[103記事](http://qiita.com/tags/Caffe)|[122記事](http://qiita.com/tags/Caffe)|[149記事](http://qiita.com/tags/Caffe)|
|[Pylearn2](https://github.com/lisa-lab/pylearn2)||[3-claused BSD license](https://github.com/lisa-lab/pylearn2)|Python||開発元GitHubに開発停止の旨|11記事|[12記事](http://qiita.com/tags/Pylearn2)|[12記事](http://qiita.com/tags/Pylearn2)|[12記事](http://qiita.com/tags/Pylearn2)|
|on Browser|
|[Keras.js](https://github.com/transcranial/keras-js)||[MIT License](https://github.com/transcranial/keras-js/blob/master/LICENSE)|JavaScript||Kerasをブラウザ上で実行できるJavaScriptライブラリ||[1記事](http://qiita.com/tags/Keras.js)|[1記事](http://qiita.com/tags/Keras.js)|[1記事](http://qiita.com/tags/Keras.js)|
|on Spark|
|[CaffeOnSpark](https://github.com/yahoo/CaffeOnSpark)|Yahoo|[Apache License 2.0](https://github.com/yahoo/CaffeOnSpark/blob/master/LICENSE.txt)||||-|記事見当たらず|[タグなし記事が2記事](https://qiita.com/search?q=CaffeOnSpark)|[タグなし記事が1記事](https://qiita.com/search?q=CaffeOnSpark)|

* その他にもたくさんある
    * http://deeplearning.net/software_links/

# 試してみよう
* GPUマシンを準備するか、Cloudの契約をするしかなかったけど [Google Colaboratory](https://colab.research.google.com/notebooks/welcome.ipynb#recent=true) が無料で、学習の範囲内なら十分なGPU付きクラウド環境を提供している。
    * TensorFlowはもちろん、自分でインストールや設定をすればChainerなども試せる。
    * 参照
        * [【秒速で無料GPUを使う】深層学習実践Tips on Colaboratory](https://qiita.com/tomo_makes/items/b3c60b10f7b25a0a5935)
            * 環境の説明や使い方
        * [【秒速で無料GPUを使う】TensorFlow/Keras/PyTorch/Chainer深層学習環境 on Colaboratory](https://qiita.com/tomo_makes/items/f70fe48c428d3a61e131)
            * TensorFlowはデフォルトで用意されているのだが、この記事の手順により、Keras, PyTorch, Chainerも試せるとのこと。Chainerは私も試して簡単でした。
        * [深層学習コンパイラTVMと主要深層学習フレームワークをColaboratoryで使い倒そう](https://qiita.com/stakemura/items/1761be70a06fa8ee853f)
            * 主なフレームワークを網羅
            
# 比較
* Google Trend /TensorFlow, Theano, CNTK, Chainer
    * Kerasは深層学習フレームワークだけを特定できず外している
    * [世界](https://trends.google.co.jp/trends/explore?date=2015-01-01%202020-02-23&q=TensorFlow,PyTorch,Theano,Chainer,ReNom)
        * TensorFlowが圧倒的だったがPyTorch猛追。
    * [日本](https://trends.google.co.jp/trends/explore?date=2015-01-01%202020-02-23&geo=JP&q=TensorFlow,PyTorch,Theano,Chainer,ReNom)
        * Chainerは残念ながら新規開発停止。PyTorchがTensorFlowと同等。


## フレームワークを複数紹介しているブログ記事（更新日確認は2020/02/24現在)
* フレームワークの紹介
    * [AI（人工知能）の人気フレームワーク4つの紹介と比較](https://kredo.jp/media/ai-fremework-comparison/) 2020/02/19
        * TensorFlow, PyTorch, MXNet, Chainer
    * [機械学習ライブラリ・ディープラーニングフレームワークおすすめ15選：特徴・便利な点・利用方法など](https://www.bigdata-navi.com/aidrops/32/) 2019/06/17
    * [深層学習いろいろ](https://qiita.com/Ted-HM/items/298116d03cbb9b3477e6) 2019/03/17
        * フレームワークの紹介
    * [Deep Learning Framework Power Scores 2018](https://towardsdatascience.com/deep-learning-framework-power-scores-2018-23607ddf297a) 2018/09/20
        * 2018年と古いけど、代表的なフレームワークについてGoogle検索量、GitHubアクティビティ、求職数などから独自に指標を算出している
    * [機械学習、深層学習のプラットフォームの整理](https://qiita.com/tsunaki/items/9e3eb294dfbf34cae926) 2018/06/13
        * フレームワークの紹介
            * Theano, TensorFlow, Caffe, Chainer, Keras
    * [ディープラーニングの比較シート：TensorFlow、Keras、PyTorch、Deeplearning4j、Caffe、MXNet、CNTK](https://skymind.ai/japan/wiki/compare-dl4j-tensorflow-pytorch) 日付不明だた2019くらい？

* ベンチマーク
    * [PyTorch vs. TensorFlow、ディープラーニングフレームワークはどっちを使うべきか問題 (1/2)](https://www.atmarkit.co.jp/ait/articles/1910/31/news028.html) 2019/10/31
    * [DeepLearningフレームワークのベンチマーク](https://qiita.com/Mogu_ff/items/c7cc5ddc2e38ea2c0bf9) 2017/11/23
        * Torch, Chainer, MxNet, TensorFlowのベンチマーク
    * [深層学習ベンチマークについて](https://qiita.com/miyamotok0105/items/ec8cfe89e1cd9479c614) 2017/02/18
        * 代表的なフレームワークをほぼ網羅して比較している

# 書籍

* 複数のフレームワークを紹介している本はほぼなくなった。TensorFlow/KerasとPyTorchか。

# 雑感

* 本命・対抗
    * TensorFlow/Keras独走と思われていたが、むずい。PyTorch急進。Googleがこのまま抜かされていくとは思われないので競争して楽しくなればいいな。どちらがいいかはすみません、分かりません。私はどちらも手を付け中。
        * 昔話
            * Caffe, Pylearn2が2強　→　TensorFlowが一気に追い抜いた　→　PyTorch急進
* 穴というか差別化
    * Chainerは日本語の自然言語処理という差別化があるかと思ってたが停止
    * SONYのNeural Network Libraries/ConsoleがGUI操作という差別化か
    * 多言語対応でMXNetと思っていた。ただ、RならMXNetの1択と思っていたが、Kerasが対応した。Amazonが応援についたけどあまり話題を聞かない
    * 数年前は各フレームワークともチュートリアル等が乏しく、H2Oはドキュメントが多いのだが、使っている記事などをあまり見かけない
    * CのDarknetが注目。早いし、個人？でここまでチュートリアルセットを充実させているのは期待感あり。と注目していたけどその後話題をほとんど聞かない、、、