「紫禁城の戦い」 - ディープラーニング フレームワーク: Keras VS PyTorch

「紫禁城の戦い」 - ディープラーニング フレームワーク: Keras VS PyTorch

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 では宣言型プログラミングをそれほど行わなくても、より柔軟かつ制御性が向上します。

[[268957]]

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. モデルのトレーニング

[[268958]]

トレーニングを始める

Keras でモデルをトレーニングするのはとても簡単です。単純な .fit() だけで、モデルのトレーニングを開始できます。

PyTorch を使用してモデルをトレーニングするには、次の手順に従います。

  • 各トレーニングバッチの開始時に勾配を初期化する
  • モデルを順方向にパスする
  • バックプロパゲーションを実行する
  • 損失を計算して重みを更新する

したがって、モデルのトレーニングに関しては、PyTorch の方が面倒です。

4. CPUとGPUのモードを制御する

[[268959]]

さらなる計算能力が必要です。

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年間の車両インターネット無料化により、自動運転の産業化が加速

ブログ    
ブログ    
ブログ    

推薦する

ロボットが家事の仕事を代行:人間のデモンストレーション動画を見るだけで、10時間でコーヒーの淹れ方を学ぶ

先週、スタンフォード大学のエビ揚げロボットが爆発事故を起こした後、コーヒーを作るロボットが再び人気を...

自動化によってセキュリティアナリストがいなくなる可能性はありますか?

否定できない現実として、私たちは自動化の時代に入り、それに伴い人工知能 (AI)、機械学習 (ML)...

人工知能が人々を生き返らせる

Google を含む多くの企業が、人間の寿命を延ばす方法を研究しています。たとえ何百年も長く生きられ...

GPT-5が稼働を開始しました!ウルトラマン:月7億では足りない。マイクロソフトがもっと投資してくれることを願う

月収7億元でもGPTのトレーニングへの巨額の投資を賄うことはできません。これはOpenAIのCEO、...

MITの研究者らが、致命的な出血を止めるためにAIを活用するハンドヘルドロボットを開発

救急医療においては、「ゴールデンタイム」を捉えることが非常に重要です。たとえば、外傷患者(特に重度の...

5つの新たなAI IoTアプリケーション

人工知能とモノのインターネットを組み合わせたこの新しい技術の波は、新たな機会をもたらし、業界全体の運...

2021年に人工知能がビジネスをどう変えるのか

従来のビジネス慣行からスマートなアプリケーションベースの慣行へと技術が進歩する中、企業は2021年に...

人工知能の発展には限界が必要

一般的な理解によれば、人工知能とは、手動でしかできないタスクを、人間以​​外のツールで完了できること...

生成AIビッグモデルが人類の進化に与える影響

日々の仕事は ChatGPT などの言語生成モデルと切り離せないものだと思いますか? Midjour...

量子コンピューティングの「GPT の瞬間」はもうすぐ来るのでしょうか?企業はどのように準備すべきでしょうか?

科学技術の世界では、大きな技術的進歩が一夜にして起こることはめったになく、多くの場合、何十年にもわた...

AIの未来: 次世代の生成モデルの探究

ニシャ・アーヤ著翻訳者 | ブガッティレビュー | Chonglou生成 AI には現在どのような機...

人工知能とビッグデータが心理学の分野に参入

人工知能とビッグデータの時代の到来により、心理学の研究に新たな扉が開かれました。人工知能は心理学実験...

Googleが量子コンピューティングAIラボを発表、今後10年のロードマップを公開

[[425546]]エリック・ルセロ博士最近、Google Quantum AIのチーフエンジニアで...

ディープラーニングモデルを本番環境に簡単に導入

[51CTO.com クイック翻訳] データから学習し、パターンを識別し、人間の介入を最小限に抑えて...

いくつかの典型的なアルゴリズム面接の質問に対する Java ソリューション

質問1:公共クラスtestClockwiseOutput { //行列を時計回りに印刷する @テスト...