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)」からのオリジナル記事です]

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

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

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

ブログ    
ブログ    
ブログ    

推薦する

AIスタートアップの構築から得た3つの重要な教訓

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...

ディープラーニングの簡単な歴史: TF と PyTorch の独占、次の 10 年間の黄金時代

過去 10 年間で、機械学習 (特にディープラーニング) の分野では多数のアルゴリズムとアプリケーシ...

ディープラーニングに関する面接で絶対に聞きたい12の質問

導入これら 12 の質問は、現在の面接で最も人気のある質問です。これらは非常に基本的な質問ですが、面...

HDに検閲済み!デューク大学が開発したAIが1秒でモザイクを復元

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

アルゴリズム モデルをエンドツーエンドのインテリジェント モデルに変換するにはどうすればよいでしょうか?

エッジ インテリジェント テクノロジーのエンジニアリング プラクティスを紹介する前に、避けることので...

第一線のSASEがエッジAIを護衛

データの共有と流通が厳格な要求になると、もともと孤立していたビジネス ネットワークは境界を打ち破り、...

...

疫病流行後、自動運転開発の方向性がより明確になりました!

自動運転は長い間、人々に「とても人気があるが、とても遠い存在」という印象を与えてきました。それは、何...

第2世代GANネットワークの台頭? DALL·E Miniのグラフィックが恐ろしく、外国人も大興奮!

現在、GoogleやOpenAIなどの大手企業が開発したテキストから画像へのモデルは、興味深いニュー...

...

...

AIがクラウドコンピューティングを再定義し、ビジネス効率を向上させる方法

長年にわたり、クラウド コンピューティングは現代のビジネスに欠かせないツールとなり、2020 年には...

...