web-dev-qa-db-ja.com

SciKit Learn、Keras、またはPytorchの違い

これらのライブラリはかなり交換可能ですか?

ここを見ると https://stackshare.io/stackups/keras-vs-pytorch-vs-scikit-learn の大きな違いは、基になるフレームワーク(少なくともPyTorchの場合)にあるようです。

10
MaxPi

はい、大きな違いがあります。

SciKit Learnは、NumPyの上に構築された一般的な機械学習ライブラリです。これは、サポートベクターマシン、ランダムフォレストなどの多くの機械学習アルゴリズム、およびデータの一般的な前処理と後処理のための多くのユーティリティを備えています。これはニューラルネットワークフレームワークではありません。

PyTorchは、以下で構成されるディープラーニングフレームワークです。

  1. NumPyに似たベクトル化された数学ライブラリですが、GPUのサポートと多くのニューラルネットワーク関連の操作(softmaxやさまざまな種類のアクティベーションなど)を備えています
  2. Autograd-基本的な操作に関して定義された、関数の勾配を自動的に計算できるアルゴリズム
  3. ニューラルネットワークの最適化に特化した、大規模な最適化のための勾配ベースの最適化ルーチン
  4. ニューラルネットワーク関連ユーティリティ関数

Kerasは高レベルのディープラーニングフレームワークであり、多くの詳細を抽象化し、制限されたハッカビリティを犠牲にして、コードをPyTorchやTensorFlowよりも単純かつ簡潔にします。 TensorFlow、Theano、CNTKなどの計算バックエンドを抽象化します。 PyTorchバックエンドはサポートしていませんが、それは不思議なことではありません。上記の簡略化された合理化されたサブセットと考えることができます。

つまり、「古典的な」非ニューラルアルゴリズムを使用している場合、PyTorchもKerasも役に立ちません。ディープラーニングを実行している場合でも、scikit-learnはそのユーティリティ部分に役立ちます。それとは別に、KerasとPyTorchのどちらかを選択できる実際のディープラーニングフレームワークが必要になりますが、両方を同時に使用することはほとんどありません。これは非常に主観的ですが、私の見解では、新しいアルゴリズムに取り組んでいる場合は、柔軟性のためにPyTorch(またはTensorFlowまたはその他の低レベルフレームワーク)を使用する可能性が高くなります。既知のテスト済みのアルゴリズムを新しい問題設定に適合させる場合は、Kerasを使用して、その単純さとエントリレベルを下げることができます。

41
Jatentaki