SciKit Learn,Keras或Pytorch的差异

Max*_*xPi 8 python machine-learning scikit-learn keras pytorch

这些库是否可以互换?

在这里https://stackshare.io/stackups/keras-vs-pytorch-vs-scikit-learn,似乎主要的区别是底层框架(至少对于PyTorch而言)。

Jat*_*aki 29

是的,有很大的不同。

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,因为它具有更高的简便性和更低的入门水平。

  • 这是这个问题的理想答案。我进行了广泛的搜索,这是我见过的最好的解释! (3认同)
  • 谢谢@Jatentaki!这是彻底的,绝对有助于理解差异以及何时使用它们。 (2认同)
  • 你可以在 Sci-Kit 中构建神经网络分类器,[对](https://scikit-learn.org/stable/modules/neural_networks_supervised.html)? (2认同)
  • @JamesL。是的,您可以,但是它更像是一种玩具功能,无需硬件(GPU)加速即可学习 (2认同)