TensorFlow は、多くの科学者、エンジニア、開発者にとって主要なディープラーニング フレームワークです。 TensorFlow 1.0 は 2017 年 2 月にリリースされましたが、使用中にはあまりユーザーフレンドリーではありません。 ここ数年、Keras と PyTorch は TensorFlow よりもはるかに簡単に使用できるため、ユーザーの間でますます人気が高まっている 2 つのディープラーニング ライブラリになりました。 この記事では、Keras と PyTorch を 4 つの側面から比較します。2 つのフレームワークの長所と短所、および独自のニーズに基づいて、どちらかを選択できます。 1. Keras と PyTorch の紹介 Keras は 2015 年 3 月に初めてリリースされ、TensorFlow、CNTK、Theano、MXNet (または TensorFlow 内の tf.contrib) で実行できる高レベル API です。 Keras の際立った特徴はその使いやすさです。Keras は、すぐに使い始めて稼働させることができる最も簡単なフレームワークです。さらに、Keras を使用すると、ニューラル ネットワークを直感的に定義でき、関数 API を使用すると、ユーザーはレイヤーを関数として定義できます。 2016 年 10 月にリリースされた PyTorch は、配列式を直接処理することに重点を置いた低レベル API として Facebook AI 研究チームによって開発されました。 Keras と比較すると、PyTorch では宣言型プログラミングをそれほど行わなくても、より柔軟かつ制御性が向上します。
2. Keras か PyTorch か? ディープラーニングの実践者は、どのフレームワークを使用するかで悩むことがあり、最終的には個人の好みに帰着することがよくあります。以下では、Keras と PyTorch の比較のいくつかの側面を紹介し、これに基づいて独自の選択を行うことができます。 1. モデルを定義するためのクラスと関数 Keras は、ディープラーニング モデルを定義するための機能 API を提供します。機能 API では、ニューラル ネットワークは、次々に適用される一連の関数として定義されます。たとえば、関数定義レイヤー 1 の出力は、関数定義レイヤー 2 の入力になります。 PyTorch を使用する場合、ユーザーは Torch ライブラリの torch.nn. モジュールを拡張するクラスとしてニューラル ネットワークを設定します。 Keras と同様に、PyTorch はレイヤーをコンポーネントとしてユーザーに提供しますが、これらのレイヤーは Python クラスに属しているため、クラスの __init__() メソッドで参照され、クラスの forward() メソッドを通じて実行されます。 対照的に、PyTorch では、単純な関数呼び出しだけでなく、Python のすべてのクラス機能にアクセスできます。ネットワークの定義がより明確かつ簡潔になります。しかし、ネットワーク コードをできるだけ早く記述することが最も重要である場合は、Keras の方が使いやすいでしょう。 2. テンソルと計算グラフと標準配列 一般的なプログラマーにとって、Keras API は多くの混乱を招く詳細を隠しており、ネットワーク層の定義も非常に直感的です。したがって、開始するにはデフォルト設定で十分です。しかし、非常に高度なモデルや「ユニークな」モデルを実装したい場合は、低レベルかつ基本的な TensorFlow を深く理解する必要があります。 しかし、実際に低レベルの TensorFlow コードを詳しく調べてみると、いくつかの課題に遭遇することになります。すべての行列乗算が揃っていることを確認する必要があります。また、レイヤー出力を印刷することさえ考えないでください。ターミナルに適切な Tensor 定義が印刷されるからです。 Keras と比較すると、PyTorch はこれらの領域でより寛容な傾向があります。各レイヤーの入力と出力のサイズを理解するだけでよく、PyTorch はこれをうまく処理するので、すぐに習得できます。抽象的な計算グラフ(デバッグ時に内部を確認できないもの)を構築する必要はありません。 PyTorch のもう 1 つの利点は、その滑らかさです。Torch テンソルと Numpy 行列を切り替えることができます。しかし、開発者がカスタムの実装をする必要がある場合、TF テンソルと Numpy マトリックスの切り替えは面倒になる可能性があり、TensorFlow を完全に理解している必要があります。 実際、PyTorch の対話型操作はさらに単純で、Torch テンソル (変数オブジェクト) を Numpy に変換し、逆の操作を実行するという 2 つのステップだけが必要です。 もちろん、何か特別なことを実装する必要がなければ、TensorFlow の障害に遭遇することはないので、Keras は問題なく動作します。しかし、何かユニークなものを実装したい場合、PyTorch の方がスムーズに実行できる可能性があります。 3. モデルのトレーニング トレーニングを始める Keras でモデルをトレーニングするのはとても簡単です。単純な .fit() だけで、モデルのトレーニングを開始できます。 PyTorch を使用してモデルをトレーニングするには、次の手順に従います。
したがって、モデルのトレーニングに関しては、PyTorch の方が面倒です。 4. CPUとGPUのモードを制御する さらなる計算能力が必要です。 tensorflow-gpu をインストールしている場合は、Keras で GPU を使用することが可能であり、デフォルトで実行されます。その後、一部の操作を CPU にオフロードしたい場合は、それを 1 行で実行できます。 しかし、PyTorch の場合、トーチ テンソルと NumPy 変数ごとに GPU を明示的に起動する必要があります。これにより、コードがさらにわかりにくくなります。また、CPU と GPU の間を行ったり来たりしてさまざまな操作を実行したい場合、間違いを起こしやすくなります。 たとえば、以前のモデルを GPU で実行するように転送するには、次の手順が必要です。 したがって、Keras はシンプルさとデフォルト設定の点で PyTorch よりも優れています。 3. Keras と PyTorch の選択に関する一般的なアドバイス 著者は一般的に初心者には Keras から始めることを推奨しています。 Keras は間違いなく最も理解しやすく使いやすいフレームワークであり、すぐに使い始めることができます。 GPU のセットアップ、抽象化コードの処理、その他の複雑なことについて心配する必要はありません。 TensorFlow コードを 1 行も変更せずに、カスタム レイヤーと損失関数を実装することもできます。 しかし、ディープ ネットワークのより細かい側面を掘り下げ始めたり、非標準のものを実装したりする場合は、PyTorch が最適なライブラリです。 PyTorch を使用するには少し余分な作業が必要ですが、速度が低下することはありません。ネットワークを迅速に実装、トレーニング、テストできるだけでなく、デバッグも簡単に行えるという利点もあります。 参考リンク: https://towardsdatascience.com/keras-vs-pytorch-for-deep-learning-a013cb63870d [この記事は51CTOコラム「Machine Heart」、WeChatパブリックアカウント「Machine Heart(id:almosthuman2014)」によるオリジナル翻訳です] この著者の他の記事を読むにはここをクリックしてください |
<<: オペレーティング システムのプロセス スケジューリング アルゴリズムとは何ですか?
>>: 3年間の車両インターネット無料化により、自動運転の産業化が加速
ディープラーニングの研究者として、私はモデルのトレーニングに深く悩まされています。モデルを何日も何晩...
今日は人工的にしか開発できない重要な技術をいくつか紹介します。音声認識からスマートホーム、人間と機械...
今日、消費者はオンライン小売業者に対して非常に高い期待を抱いています。多くの場合、顧客のショッピング...
最近では、Android メーカーは大きなモデルなしで携帯電話の発表会を開催しようとはしません。 O...
ニューラル ネットワークは錬金術の炉のようなものです。大量のデータを入力すると、魔法のような結果が生...
私たちは、企業や専門家が IoT についてどう考えているかを知りたいと思っていますが、一般の人々はど...
農業用ロボットは、一般的に、農産物を操作対象とし、ある程度の人間の知覚と行動能力を持ち、さまざまな高...
専門家は、将来的には職業の約 70% が自動化されると予測しています。運転手、教師、ベビーシッター、...
記事「バックプロパゲーションを使用した多層ニューラル ネットワークのトレーニングの原理」では、バック...
マイクロソフトのCEOサティア・ナデラ氏は1月17日(現地時間)の火曜日、人工知能に関して世界中でコ...
海外メディアの報道によると、マイクロソフト研究チームのZiyu Wan氏、Zhang Bo氏らは、デ...
ディープニューラルネットワークのトレーニングは困難な作業です。 長年にわたり、研究者たちは学習プロセ...
[[214992]]まず、コードテンソルフローをインポートする tensorflow.example...
合成現実(1)課題人工知能は、人々がこれまでしたことのない、または言ったことのないことをしたり、した...