Keras 対 PyTorch: どちらが「ナンバーワン」のディープラーニング フレームワークでしょうか?

Keras 対 PyTorch: どちらが「ナンバーワン」のディープラーニング フレームワークでしょうか?

「最初のディープラーニングフレームワークをどのように選択するか」は、初心者にとって常に頭痛の種でした。この記事では、deepsense.ai の研究者が高レベルのフレームワークに関する答えを示します。 Keras と PyTorch の比較では、著者は異なるフレームワークでの同じニューラル ネットワークのパフォーマンスのベンチマーク結果も示しています。現在、GitHub では、Keras には 31,000 を超えるスターがあり、その後登場した PyTorch には 17,000 近くのスターがあります。

PyTorch は 4 月末のバージョン 0.4 で Windows のサポートを追加しましたが、Windows での安定性は Keras や TensorFlow に比べてまだ若干劣っていることに注意が必要です。

2 つの主要なフレームワークへのリンク:

  • ケラス: https://github.com/keras-team/keras (https://keras.io/)
  • pytorch: https://github.com/pytorch/pytorch

ディープラーニングを学びたいですか? ディープラーニングをビジネスに応用したいですか? ディープラーニングを使って副業を始めたいですか? それとも、単に市場価値のあるスキルを身につけたいですか? 目標が何であれ、適切なディープラーニング フレームワークを選択することが、目標達成への第一歩です。

Keras または PyTorch を選択することを強くお勧めします。どちらも非常に強力なツールであり、学習したり実験したりするのが楽しいです。私たちは教師と生徒の視点からこれを考えます。この記事の著者である Piotr は、企業内で Keras と PyTorch のワークショップを実施しており、Rafał は現在両方のフレームワークを学習中です。

1. はじめに

Keras と PyTorch は、データ サイエンティストの間で人気のあるオープン ソースのディープラーニング フレームワークです。

  • Keras は、TensorFlow、CNTK、Theano、MXNet (または TensorFlow 内の tf.contrib) 上で実行できる高レベル API です。 Keras は 2015 年 3 月に初めてリリースされ、その使いやすさと簡潔な構文により、支持を得て急速に発展してきました。 Keras は Google がサポートするフレームワークです。
  • PyTorch は、配列式を直接処理することに重点を置いた低レベル API として 2017 年 1 月に一般公開されました。昨年大きな注目を集め、カスタム表現の最適化を必要とする学術研究やディープラーニングアプリケーションに最適なソリューションとなりました。 Facebook がサポートするフレームワークです。

2 つのフレームワークの具体的な詳細について説明する前に、「どちらのフレームワークが優れているか」という質問に対する直接的で明確な答えは存在しないことを明確にしておきます。最終的にどのフレームワークを選択するかは、技術的な背景、ニーズ、期待によって決まります。この記事の目的は、Keras と PyTorch のどちらを選択すべきかをよりよく理解できるようにすることです。

一言で言えば、Keras は標準レイヤーとプラグ アンド プレイで簡単に学習および実験できます。一方、PyTorch は低レベルのアプローチを提供し、数学的な背景を持つユーザーにとってより柔軟です。

では、別のフレームワークを使用してみませんか?

この記事では、TensorFlow を最適なディープラーニング フレームワークとして選択することの長所と短所については説明しません。これは、TensorFlow が Keras (TensorFlow の公式高レベル ライブラリ) や PyTorch ほど初心者に優しいものではないと考えているためです。 Theano チュートリアルはいくつか見つかりますが、現在は積極的に開発されていません。 Caffe は柔軟性に欠け、Torch は Lua 言語を使用します (ただし、書き直すのは非常に困難です :))。 MXNet、Chainer、CNTK は現時点ではそれほど広く使用されていません。

Keras vs PyTorch: 使いやすさと柔軟性

Keras と PyTorch は異なる抽象化レベルで動作します。

Keras は、一般的に使用されるディープラーニングのレイヤーと操作をレゴサイズのクリーンなビルディングブロックにカプセル化する高レベルのフレームワークであり、データサイエンティストがディープラーニングの複雑さについて考える必要がなくなります。

PyTorch は比較的低レベルの実験環境を提供し、ユーザーがカスタム レイヤーを記述して数値最適化タスクをより自由に探索できるようにします。 Python のパワーを最大限に活用し、使用するすべての関数のコアにアクセスできれば、複雑なアーキテクチャの開発がはるかに簡単になります。当然、冗長性が犠牲になります。

Keras と PyTorch で定義された単純な畳み込みネットワークを使用して、2 つを比較してみましょう。

1. ケラス

  1. モデル=シーケンシャル()
  2. model.add(Conv2D(32, (3, 3), activation = 'relu' , input_shape =(32, 32, 3)))
  3. モデルを追加します(MaxPool2D())
  4. model.add(Conv2D(16, (3, 3),アクティベーション= 'relu' ))
  5. モデルを追加します(MaxPool2D())
  6. モデルを追加します(フラット化())
  7. model.add(Dense(10, activation = 'softmax' ))

2. パイトーチ

  1. クラスNet(nn.Module):
  2. __init__(self)を定義します。
  3. super(Net, self).__init__()
  4.  
  5. 自己.conv1 = nn.Conv2d (3, 32, 3)
  6. 自己.conv2 = nn.Conv2d (32, 16, 3)
  7. 自己.fc1 = nn.線形(16 * 6 * 6, 10)
  8. 自己プール= nn.MaxPool2d (2, 2)
  9.  
  10. def forward(self, x):
  11. x = self .pool(F.relu(self.conv1(x)))
  12. x = self .pool(F.relu(self.conv2(x)))
  13. x x = x.view(-1, 16 * 6 * 6)
  14. x = F .log_softmax(self.fc1(x),次元=-1)
  15.  
  16. xを返す
  17.  
  18. モデル=ネット()

上記のコード スニペットは、2 つのフレームワーク間のわずかな違いを示しています。モデルのトレーニングに関しては、PyTorch では約 20 行のコードが必要ですが、Keras では 1 行だけです。 GPU アクセラレーションは Keras では暗黙的に処理されますが、PyTorch では CPU と GPU 間でデータを移動するタイミングを指定する必要があります。

これに不慣れな場合は、高レベルのフレームワークとして Keras が明らかに有利である可能性があります。 Keras は確かにより読みやすく簡潔なので、ユーザーは実装の詳細の一部を省略して、最初のエンドツーエンドのディープラーニング モデルをより速く構築できます。ただし、これらの詳細を無視すると、ユーザーがディープラーニング パイプライン内の各計算モジュールの内部動作を調べる機会が制限されます。 PyTorch を使用すると、バックプロパゲーションやその他のトレーニング プロセスなどのディープラーニングのコア概念について、より深く考える機会が増えます。

つまり、Keras は PyTorch よりもはるかにシンプルですが、決して「おもちゃ」ではありません。初心者から経験豊富なデータ サイエンティストまでが使用する本格的なディープラーニング ツールです。

たとえば、DSTL 衛星画像特徴検出 Kaggle コンテストでは、上位 3 チームのソリューションはすべて Keras を使用しており、4 位 (deepsense.ai チーム) は PyTorch と Keras を使用しました。

ディープラーニング アプリケーションに Keras が提供できる以上の柔軟性が必要かどうかを検討する価値があります。ニーズに応じて、最小電力ルールに従うと、Keras が最適なソリューションとなる場合があります。

3. 結論

  • Keras: より簡潔でシンプルなAPI
  • PyTorch: より柔軟で、ユーザーがディープラーニングの概念をより深く理解できるように促します

Keras vs PyTorch: 人気と利用可能な学習リソース

フレームワークの人気は、使いやすさの指標であるだけでなく、チュートリアル、コード リポジトリ、ディスカッション グループなどのコミュニティ サポートの指標でもあります。 2018 年 6 月現在、Keras と PyTorch は GitHub と arXiv 論文の両方で人気が高まり続けています (Keras について言及しているほとんどの論文では、その TensorFlow バックエンドについても言及していることに注意してください)。 KDnuggets によると、Keras と PyTorch は最も急速に成長しているデータ サイエンス ツールです。

どちらのフレームワークにも優れたドキュメントがありますが、PyTorch の方がコミュニティのサポートが強力です。ドキュメントや StackOverflow では見つからない回答を見つけるには、PyTorch のディスカッション ボードを訪れる価値があります。

Keras をベースにした初心者向けのディープラーニング コースは PyTorch をベースにしたコースよりもシンプルで、初心者の間では前者の方が人気があることがわかりました。 Keras のコードの読みやすさと究極の使いやすさにより、ディープラーニング愛好家、教師、そして強力な Kaggle チャンピオンによって広く使用されています。

優れた Keras リソースとディープラーニング コースの例については、Piotr Migdał による記事「Starting deep learning hands-on: image classified on CIFAR-10」と、Keras の作成者 François Chollet による書籍「Deep Learning with Python」を参照してください。 PyTorch リソースに関しては、ニューラル ネットワークの内部の仕組みを学習するための、もう少し難しくて包括的なアプローチを提供する公式チュートリアルをお勧めします。

結論は

  • Keras: 多数のチュートリアルと再利用可能なコード
  • PyTorch: 優れたコミュニティサポートと積極的な開発

5. Keras vs PyTorch: デバッグとイントロスペクション

Keras は多くの計算モジュールをカプセル化しているため、問題の原因となるコードを特定することが困難です。

それに比べて、PyTorch はより冗長で、スクリプトを 1 行ずつ実行できます。 NumPy のデバッグと同様に、コード内のすべてのオブジェクトに簡単にアクセスし、print ステートメント (または任意の標準 Python デバッグ ステートメント) を使用して問題のコードを確認できます。

Keras ユーザーが作成した標準ネットワークは、PyTorch ユーザーが作成した標準ネットワークよりもエラーが発生する可能性が桁違いに低くなります。しかし、いったん何か問題が発生すると、損害は甚大になる可能性があり、エラーが発生したコード行を見つけるのが困難な場合がよくあります。 PyTorch は、モデルの複雑さを気にすることなく、より簡単なデバッグ エクスペリエンスを提供します。さらに、何か問題が発生したと思われる場合は、PyTorch リポジトリを調べて読み取り可能なコードを確認できます。

結論は

  • PyTorch: デバッグ機能の向上
  • Keras: 単純なネットワークをデバッグする必要性が(潜在的に)少なくなる

6. Keras vs PyTorch: モデルのエクスポートとクロスプラットフォームの移植性

トレーニング済みのモデルをエクスポートして本番環境にデプロイするためのオプションは何ですか?

PyTorch は、Python ベースで移植性のない Pickles にモデルを保存しますが、Keras はより安全なアプローチである JSON + H5 ファイル形式を活用します (ただし、Keras でカスタム レイヤーを保存するのは一般的に困難です)。一方、Keras には R 言語インターフェースもあり、一緒に働くデータ アナリスト チームが R 言語を使用している場合に役立ちます。

Keras は TensorFlow 上で実行されるため、TensorFlow for Mobile および TensorFlow Lite を通じてモバイル プラットフォームに展開するためのオプションが増えます。作成した Web アプリケーションは、TensorFlow.js または Keras.js を通じて Web ページにデプロイすることもできます。たとえば、トライポフォビアのトリガーを検出できる、ディープラーニングを利用したブラウザ プラグインをご覧ください: https://github.com/cytadela8/trypophobia。

PyTorch モデルをエクスポートするプロセスは、Python コードの制限により、より面倒です。現在広く採用されている方法は、まず ONNX を使用して PyTorch モデルを Caffe2 形式に変換することです。

結論は

  • Keras が勝ちます。Keras にはより多くのデプロイメント オプション (TensorFlow バックエンド経由で直接) があり、モデルのエクスポートも簡単です。

7. Keras vs PyTorch: パフォーマンス

ドナルド・クヌースには有名な言葉があります。「早すぎる最適化はプログラミングにおける諸悪の根源である(少なくとも大部分は)」

ほとんどの場合、特に学習段階では、ベンチマークの速度の違いはフレームワーク選択の主な基準にはなりません。 GPU の時間は、データ サイエンティストの時間よりも明らかにずっと安価です。さらに、学習中、パフォーマンスのボトルネックは、フレームワーク自体の速度ではなく、実装の失敗、最適化されていないネットワーク、データの読み込みによって主に発生します。もちろん、比較を完全なものにするためには、この側面を導入する必要があります。ここでは、2 つのパフォーマンス比較結果をお勧めします。

  • Wojtek Rosiński の「TensorFlow、Keras、PyTorch の比較」: https://wrosinski.github.io/deep-learning-frameworks/
  • Microsoft の「ディープラーニング フレームワークの比較: ロゼッタ ストーン アプローチ」: https://github.com/ilkarman/DeepLearningFrameworks/

PyTorch は TensorFlow と同じくらい高速で、おそらくリカレント ニューラル ネットワークではさらに高速ですが、Keras は一般的に比較すると低速です。最初の記事の著者が指摘したように、ほとんどの場合、高性能フレームワーク (PyTorch や TensorFlow など) の計算効率の利点よりも、Keras が提供する高速な開発環境と実験の容易さの方が勝ります。

結論は:

  • トレーニング速度の点ではPyTorchがKerasを上回る

8. Keras vs PyTorch: 比較のまとめ

Keras と PyTorch はどちらも、ディープラーニング フレームワークの初心者にとって最適な選択肢です。数学者、研究者、またはモデルの本質を理解したい場合は、PyTorch の選択を検討できます。 PyTorch は、より高度なカスタマイズとデバッグが必要な場合 (YOLOv3 を使用したオブジェクト検出や注意力のある LSTM など)、またはニューラル ネットワークではなく配列式を最適化する必要がある場合 (行列分解や word2vec アルゴリズムなど) に非常に便利です。

プラグアンドプレイ フレームワークが必要な場合、Keras は間違いなくよりシンプルな選択肢です。数学的な実装に多くの時間を費やすことなく、モデルをすばやく構築、トレーニング、評価できます。

ディープラーニングの中核となる概念的知識は移転可能です。 1 つの環境で基本を習得したら、学んだことを応用して新しいディープラーニング ライブラリを習得できます。

Keras と PyTorch の両方でシンプルなディープラーニング モデルを試してみることをお勧めします。

オリジナルリンク: https://deepsense.ai/keras-or-pytorch/

[この記事は51CTOコラム「Machine Heart」、WeChatパブリックアカウント「Machine Heart(id: Almosthuman2014)」からのオリジナル記事です]

この著者の他の記事を読むにはここをクリックしてください

<<:  生物学的ニューラルネットワークから人工ニューラルネットワークへ

>>:  選択できるアルゴリズムが多すぎますか?適切な機械学習アルゴリズムを選択する方法

ブログ    
ブログ    
ブログ    

推薦する

機械学習におけるシャプレー値を理解するにはどうすればよいでしょうか?

[[282454]]シャプレー値について初めて聞いたのは、モデルの解釈可能性を勉強していたときでし...

「行動は言葉よりも雄弁である」:言語モデルはロボットにどのように適応するのか?

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

ネットワークインテリジェンスに関する誤解は4つある

夕食後に AI について話さないと、社会の一員ではないような気がします。しかし、ネットワーク インテ...

手紙を開かずに読むことはできますか? MITのX線技術がネイチャー誌に掲載される

2世紀前に折りたたまれた手紙の内容を、開かずに読むにはどうすればよいでしょうか?アルゴリズムはそれを...

Alibaba iDSTのビジュアルコンピューティング責任者、Hua Xiansheng氏:アルゴリズムの利点は消えつつある

「テクノロジー研究と現実世界の問題を組み合わせ、現実の問題を解決して価値を生み出すことにますます興味...

図: ページ置換アルゴリズム

[[398509]]この記事はWeChatの公開アカウント「Jingyu」から転載したもので、著者は...

...

人工知能に最適なプログラミング言語

[51CTO.com クイック翻訳]人工知能は 20 世紀半ばから存在しています。それにもかかわらず...

Metaverse と Web3 は似ていますが、最も重要な違いは何でしょうか?

現在、ビジネス テクノロジーの世界では、2 つの流行語が頻繁に登場しています。 1つはWeb3、もう...

人工知能とVRを融合し、多様な体験を実現

人工知能サービス - Microsoft Cognitive Services には当初、視覚、音声...

研究者は人工知能を使ってSARS-CoV-2のような次のウイルスを見つける

ジョージタウン大学の科学者が率いる国際研究チームは、COVID-19パンデミックの原因ウイルスである...

一時停止トークンを使用して大規模モデルを再トレーニングすると、AIは行動する前によく考えることを学ぶ

ChatGPT に回答を出す前に手順について考えてもらうことで、精度を向上させることができます。では...

...

人工知能のビジネス価値を最大限に引き出すための10の重要な役割

あらゆる業界でますます多くの企業が、ビジネス プロセスを変革するために AI を導入しています。しか...

RSAは過去2世紀で最も重要なアルゴリズムの1つです

Diffie-Hellman暗号化アルゴリズムの欠点[[225219]]前回の記事では、Diffie...