Pythonディープ・ラーニング・フレームワークの概要

Theanoからの拡張が2個も紹介されてる。フランスのモントリオール大学で使ってるのがTheano。 mxnetは早い。kerasが使いやすいと書いてある。


Theano、Lasagne、Blocks、TensorFlow、Keras、MXNet、PyTorchなど、主要なPythonディープラーニングフレームワークの簡潔な概要をお読みください。

私は最近、「ニューラルネットワークのための最高のPythonライブラリ」の話題について、私の古いData Science Stack Exchangeの回答を見つけました。そして、Pythonの深層学習エコシステムが過去2.5年の間にどのくらい進化したかがわかりました。 2014年7月に私が推奨したライブラリ、pylearn2はもはや積極的に開発され、維持されていませんが、深層学習ライブラリが数多く出現しています。 それぞれには独自の長所と短所があります。

Theano

  説明:

TheanoはPythonライブラリで、多次元配列を効率的に使用する数式を定義、最適化、評価することができます。 GPUで動作し、効率的なシンボリックな区別を行います。

ドキュメンテーション

http://deeplearning.net/software/theano/

概要:

Theanoは、私たちのリストにある他の深層学習フレームワークの多くに力を与える数値計算ワークスです。それはFrédéricBastienとモントリオール大学の研究室MILAの優れた研究チームによって構築されました。そのAPIはかなり低いレベルです。効果的なTheanoを書くためには、他のフレームワークの中で隠されているアルゴリズムに精通している必要があります。 Theanoは、充実した学術的な機械学習の専門知識を備えているか、モデルのきめ細かな制御を求めているか、あるいは珍しいモデルや珍しいモデルを実装したい場合には、Go-toライブラリです。一般に、Theanoは柔軟性のために使いやすさをトレードしています。

長所:

フレキシブル 適切に使用された場合の演奏者 短所:

実質的な学習曲線 下位API 複雑な記号グラフをコンパイルするのが遅くなる リソース:

インストールガイド http://deeplearning.net/software/theano/install.html 公式のTheanoチュートリアル http://deeplearning.net/software/theano/tutorial/ Theanoスライドショーと練習問題 https://github.com/goodfeli/theano_exercises Theanoによる線形回帰からCNNへ https://github.com/Newmu/Theano-Tutorials Python&Theanoによるディープラーニング入門(MNISTビデオチュートリアルhttps://indico.io/blog/introduction-to-deep-learning-with-python-and-theano-2/

Lasagne

説明:

Theanoのニューラルネットワークを構築およびトレーニングするための軽量ライブラリ。

ドキュメンテーション

http://lasagne.readthedocs.org/

概要:

Theanoは、まず象徴的数学のためのライブラリを目指しているため、Theanoの上に深層学習に適した抽象概念を提供しています。 DeepMindの研究者であるSander Dielemanが主に書いて、管理しています。 Lasagneは、シンボリック変数間の関数関係でネットワークモデルを指定するのではなく、ユーザーが作業するための “Conv2DLayer"や "DropoutLayer"のようなビルディングブロックをレイヤーレベルで考えることができます。 Lasagneは、柔軟性の面でほとんど犠牲を必要とせず、レイヤー定義、レイヤーの初期化、モデル正則化、モデル監視、モデル訓練を支援する豊富な共通コンポーネントを提供します。

長所:

依然として非常にフレキシブル Theanoより抽象度の高い層 ドキュメントとコードには、さまざまなパスタ・パンチが含まれています 短所:

より小さいコミュニティ リソース:

公式GitHubページ https://github.com/Lasagne/Lasagne 公式インストールガイド http://lasagne.readthedocs.io/en/latest/user/installation.html 公式ラザニアチュートリアル http://lasagne.readthedocs.io/en/latest/user/tutorial.html ラザーンコードの例 https://github.com/Lasagne/Lasagne/tree/master/examples

Blocks

説明:

ニューラルネットワークを構築しトレーニングするためのTheanoフレームワーク

ドキュメンテーション

http://blocks.readthedocs.io/ja/latest/

概要:

Lasagneと同様に、BlocksはTheanoの上に抽象レイヤーを追加して、生のTheanoを書くより深く学ぶモデルのよりクリーンでシンプルで標準化された定義を容易にすることを目指しています。これは、モントリオール大学の研究室MILAによって書かれました.Teranoの構築に貢献した人々と、ニューラルネットワークの定義、死者のPyLearn2との最初の高水準インタフェースに貢献した人々の一部です。効果的に使用するには少し難しい学習曲線を犠牲にして、Lasagneよりも少し柔軟です。とりわけ、ブロックはリカレントニューラルネットワークアーキテクチャの優れたサポートを持っているので、そのジャンルのジャンルを調べることに興味があるかどうかは一見の価値があります。 TensorFlowと並んで、Blocksは、私たちがインディゴでプロダクションに導入した多くのAPIのライブラリです。

長所:

依然として非常にフレキシブル Theanoより抽象度の高い層 非常によくテストされた 短所:

実質的な学習曲線 より小さいコミュニティ リソース:

公式インストールガイド

http://blocks.readthedocs.io/en/latest/setup.html ブロックライブラリの設計に関するArxiv論文 https://arxiv.org/pdf/1506.00619.pdf BlocksとLasagneの違いについてのredditの議論 https://www.reddit.com/r/MachineLearning/comments/4kpztm/lasagne_vs_blocks_for_deep_learning/ ブロックのデータパイプライン用姉妹ライブラリ、Fuel https://github.com/mila-udem/fuel

TensorFlow

説明:

データフローグラフを使用した数値計算用のオープンソースソフトウェアライブラリ。

ドキュメンテーション

https://www.tensorflow.org/api_docs/python/

概要:

TensorFlowは、Theanoのような低レベルのシンボリック計算ライブラリと、BlocksやLasagneのようなより高水準のネットワーク仕様ライブラリとの融合です。 Pythonディープラーニングライブラリコレクションの最新メンバーですが、Google Brainチームの支援を受けて最大のアクティブコミュニティを獲得した可能性があります。複数のGPU機械学習モデルを実行し、効率的なデータパイプラインを提供するユーティリティを提供し、モデルの検査、ビジュアライゼーション、シリアライズのためのモジュールを内蔵しています。最近では、TensorFlowチームは、次の深層学習ライブラリであるKerasのサポートを我々のリストに組み込むことに決めました。コミュニティは、TensorFlowには欠点がありますが、コミュニティの大きさとプロジェクトの背後にある大量の勢いは、TensorFlowを学ぶことが安全な賭けだということに同意しているようです。結果的に、TensorFlowは今日のインディペンデーションで深く学ぶ選択のライブラリです。

長所:

ソフトウェア大手のGoogleが支援 非常に大きなコミュニティ 低レベルと高レベルのネットワークトレーニングへのインターフェイス Theanoベースのオプションよりも速いモデルのコンパイル クリーンなマルチGPUサポート 短所:

Tanoorflowは追いついていますが、最初はTheanoベースのオプションより多くのベンチマークでは遅くなりました。 RNNサポートはまだTheanoによってoutclassedです リソース:

Official TensorFlowのウェブサイト TensorFlow ダウンロードと設定ガイド https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/get_started/os_setup.md インドネシアのTensorFlow https://indico.io/blog/the-good-bad-ugly-of-tensorflow/ TensorFlowチュートリアルのコレクション https://github.com/nlintz/TensorFlow-Tutorials TensorFlowを使って教えたUdacityマシン学習コース https://www.udacity.com/course/deep-learning–ud730 TensorFlow MNISTチュートリアル https://www.tensorflow.org/tutorials/mnist/beginners/ TensorFlowデータ入力 https://indico.io/blog/tensorflow-data-inputs-part1-placeholders-protobufs-queues/

Keras

説明:

Pythonの深層学習ライブラリ。コンバネット、リカレントニューラルネットワークなどTheanoまたはTensorFlowで実行されます。

ドキュメンテーション

https://keras.io/

概要:

Kerasはたぶん最高レベルで、大部分のユーザーフレンドリーなライブラリです。 Google Brainチームのもう一人のメンバーであるFrancis Cholletによって書かれ維持されています。ユーザーは、構築したモデルをTheanoまたはTensorFlowの記号グラフで実行するかどうかを選択できます。 KerasのユーザーインターフェイスはTorchからインスピレーションを得ています。そのため、Luaでの機械学習の経験があれば、Kerasは一見価値があります。 Kerasコミュニティは、優れたドキュメントと使いやすさのおかげで非常に大きく活発でした。最近、TensorFlowチームは、Kerasサポートを組み込んだ出荷計画を発表しました。すぐにKerasはTensorFlowプロジェクトのサブセットになります。

長所:

TheanoまたはTensorFlowバックエンドの選択 直観的で高水準のインタフェース 簡単な学習曲線 短所:

柔軟性が低く、他のオプションよりも規範的 リソース:

公式インストールガイド https://keras.io/#installation KerasユーザーのGoogleグループ https://groups.google.com/forum/#!forum/keras-users Kerasの例のリポジトリ https://github.com/fchollet/keras/tree/master/examples DockerでKerasを使用する方法 https://github.com/fchollet/keras/tree/master/docker アプリケーションエリア別Kerasチュートリアルリポジトリ https://github.com/fchollet/keras-resources

MXNet

説明:

MXNetは、効率と柔軟性の両方を考慮して設計された深層学習フレームワークです。

ドキュメンテーション

http://mxnet.io/api/python/index.html#python-api-reference

概要:

MXNetは、深層学習のためのAmazonの選択肢のライブラリであり、おそらく一番の実績のあるライブラリです。これは、TheanoとTensorFlowに似たデータフローグラフを持ち、マルチGPU構成を良好にサポートし、LasagneやBlocksに似たより高いレベルのモデルビルディングブロックを持ち、想像できるどんなハードウェアでも実行できます(携帯電話)。 MXNetはR、Julia、C ++、ScalaMatlabJavascriptへのインターフェイスも提供しています。それに次ぐ性能を求めているなら、MXNetを選んでください。MXNetのいくつかの特色に取り組む必要があります。

長所:

急速なベンチマーク 非常にフレキシブル 短所:

最小のコミュニティ Theanoよりも激しい学習曲線 リソース:

公式スタートガイド http://mxnet.io/get_started/ インディゴのMXNet入門 https://indico.io/blog/getting-started-with-mxnet/ MXNetサンプルのリポジトリ https://github.com/dmlc/mxnet/tree/master/example AmazonのCTOがMXNetを買収 http://www.allthingsdistributed.com/2016/11/mxnet-default-framework-deep-learning-aws.html MXNet Arxiv用紙 https://arxiv.org/abs/1512.01274

PyTorch

説明:

強力なGPUアクセラレーションを備えたPythonテンソルとダイナミックニューラルネットワーク

ドキュメンテーション

http://pytorch.org/docs/

概要:

PyTorchは1週間前にリリースされたばかりで、Pythonの深層学習フレームワークのリストの中の新しい子供です。 LuaのTorchライブラリがPythonに移植されていないため、Facebook Artificial Intelligence Researchチーム(FAIR)の支援を受けており、動的計算グラフ(Theano、TensorFlow、デリバティブ陪審員はPyTorchがPythonの深層学習エコシステムで果たす役割についてまだ議論していませんが、すべての兆候は、PyTorchが私たちのリストにある他のフレームワークの非常に優れた代替手段であることを示しています。

長所:

Facebookからの組織的支援 動的グラフのきれいなサポート 高レベルと低レベルのAPIのブレンド 短所:

代替案よりはるかに成熟していない(自分たちの言葉で - 「私たちは早期リリースのベータ版です。いくつかの冒険を期待してください」) 限定された参考文献/公式文書の外のリソース リソース:

PyTorch公式ホームページ http://pytorch.org/ PyTorch twitter feed https://twitter.com/PyTorch PyTorchサンプルのリポジトリ https://github.com/pytorch/examples PyTorchチュートリアルリポジトリ https://github.com/pytorch/tutorials

ライター

Madison May、indico

参考

http://www.kdnuggets.com/2017/02/python-deep-learning-frameworks-overview.html