web-dev-qa-db-fra.com

Différences dans SciKit Learn, Keras ou Pytorch

Ces bibliothèques sont-elles assez interchangeables?

En regardant ici, https://stackshare.io/stackups/keras-vs-pytorch-vs-scikit-learn , il semble que la principale différence soit le cadre sous-jacent (au moins pour PyTorch).

10
MaxPi

Oui, il y a une différence majeure.

SciKit Learn est une bibliothèque générale d'apprentissage automatique, construite sur NumPy. Il comporte de nombreux algorithmes d'apprentissage automatique tels que les machines à vecteurs de support, les forêts aléatoires, ainsi que de nombreux utilitaires pour le pré et post-traitement général des données. Ce n'est pas un cadre de réseau neuronal.

PyTorch est un cadre d'apprentissage en profondeur, composé de

  1. Une bibliothèque mathématique vectorisée similaire à NumPy, mais avec prise en charge GPU et de nombreuses opérations liées au réseau de neurones (telles que softmax ou divers types d'activations)
  2. Autograd - un algorithme qui peut calculer automatiquement les gradients de vos fonctions, définis en termes d'opérations de base
  3. Routines d'optimisation basées sur les gradients pour une optimisation à grande échelle, dédiées à l'optimisation des réseaux de neurones
  4. Fonctions utilitaires liées au réseau de neurones

Keras est un cadre d'apprentissage en profondeur de niveau supérieur, qui résume de nombreux détails, rendant le code plus simple et plus concis que dans PyTorch ou TensorFlow, au prix d'une piratage limitée. Il résume le backend de calcul, qui peut être TensorFlow, Theano ou CNTK. Il ne prend pas en charge un backend PyTorch, mais ce n'est pas quelque chose d'insondable - vous pouvez le considérer comme un sous-ensemble simplifié et rationalisé de ce qui précède.

En bref, si vous optez pour des algorithmes "classiques" non neuronaux, ni PyTorch ni Keras ne vous seront utiles. Si vous faites du deep learning, scikit-learn peut toujours être utile pour sa partie utilitaire; en dehors de cela, vous aurez besoin du cadre d'apprentissage en profondeur réel, où vous pouvez choisir entre Keras et PyTorch, mais il est peu probable que vous utilisiez les deux en même temps. C'est très subjectif, mais à mon avis, si vous travaillez sur un nouvel algorithme, vous êtes plus susceptible d'utiliser PyTorch (ou TensorFlow ou un autre cadre de niveau inférieur) pour plus de flexibilité. Si vous adaptez un algorithme connu et testé à un nouveau paramètre de problème, vous souhaiterez peut-être utiliser Keras pour sa plus grande simplicité et son niveau d'entrée inférieur.

41
Jatentaki