「紫禁城の戦い」 - ディープラーニング フレームワーク: 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年間の車両インターネット無料化により、自動運転の産業化が加速

ブログ    
ブログ    

推薦する

100倍速い!ディープラーニングトレーニングツールであるDetermined AIがオープンソースになりました。より速く、よりシンプルに、より強力に

ディープラーニングの研究者として、私はモデルのトレーニングに深く悩まされています。モデルを何日も何晩...

人工知能のいくつかの重要な技術をご存知ですか?

今日は人工的にしか開発できない重要な技術をいくつか紹介します。音声認識からスマートホーム、人間と機械...

AIが顧客体験を変革する10の方法

今日、消費者はオンライン小売業者に対して非常に高い期待を抱いています。多くの場合、顧客のショッピング...

Androidスマートフォンを開くと、画面全体に「Big Model」という3つの単語が表示されます。

最近では、Android メーカーは大きなモデルなしで携帯電話の発表会を開催しようとはしません。 O...

ニューラルネットワークの内部はどのようになっているのでしょうか?

ニューラル ネットワークは錬金術の炉のようなものです。大量のデータを入力すると、魔法のような結果が生...

Verdict、2020年第1四半期のTwitterにおけるIoTトレンドトップ5を発表

私たちは、企業や専門家が IoT についてどう考えているかを知りたいと思っていますが、一般の人々はど...

5年後、農業ロボットの市場価値は引き続き増加し、約880億ドルに達するだろう。

農業用ロボットは、一般的に、農産物を操作対象とし、ある程度の人間の知覚と行動能力を持ち、さまざまな高...

将来、人工知能ロボットに置き換えられる可能性のある10の仕事

専門家は、将来的には職業の約 70% が自動化されると予測しています。運転手、教師、ベビーシッター、...

バックプロパゲーションを用いた多層ニューラルネットワークのトレーニングの原理

記事「バックプロパゲーションを使用した多層ニューラル ネットワークのトレーニングの原理」では、バック...

...

マイクロソフトCEOナデラ氏:世界は人工知能に関して幅広い合意を形成しつつある

マイクロソフトのCEOサティア・ナデラ氏は1月17日(現地時間)の火曜日、人工知能に関して世界中でコ...

マイクロソフトは、劣化が著しい古い写真を復元できる新しいアルゴリズムを開発した。

海外メディアの報道によると、マイクロソフト研究チームのZiyu Wan氏、Zhang Bo氏らは、デ...

ディープラーニングにおける正規化技術の包括的な概要

ディープニューラルネットワークのトレーニングは困難な作業です。 長年にわたり、研究者たちは学習プロセ...

手書き認識のための単層基本ニューラルネットワーク

[[214992]]まず、コードテンソルフローをインポートする tensorflow.example...

IEEE: 新興人工知能サイバーセキュリティの課題と解決策

合成現実(1)課題人工知能は、人々がこれまでしたことのない、または言ったことのないことをしたり、した...