【问题标题】:Differences in SciKit Learn, Keras, or Pytorch [closed]SciKit Learn、Keras 或 Pytorch 的差异 [关闭]
【发布时间】:2019-06-28 20:39:07
【问题描述】:

这些库是否可以互换?

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

【问题讨论】:

  • Keras 和 Pytorch,或多或少是的。 scikit-learn 范围更广,可以完成大量与数据科学相关的任务,包括插补、特征编码和训练/测试拆分,以及非基于神经网络的模型。在某些时候,如果不使用 scikit-learn,你将很难在 python 中使用 NN
  • 除了@BallpointBen 提到的事情之外,scikit-learn 更专注于训练传统的机器学习模型(几乎所有不是深度学习的东西)。在深度学习中,PyTorch 是相当低级的计算库。 Keras 是一个更高级别的深度学习库(具有与 scikit-learn 相似的 API),通常在 tensorflow 上运行(但支持其他后端)。
  • 此问题因基于意见而关闭,此后已进行编辑以解决错误;请投票重新提出问题

标签: python machine-learning keras scikit-learn pytorch


【解决方案1】:

是的,有很大的不同。

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,因为它更简单且入门级别更低。

【讨论】:

  • 谢谢@Jatentaki!这是彻底的,绝对有助于理解差异以及何时使用它们。
  • 你可以在 Sci-Kit 中构建神经网络分类器,right?
  • @JamesL。是的,你可以,但它更像是一个没有硬件 (GPU) 加速的学习玩具功能
  • 这是这个问题的理想答案。我进行了广泛搜索,这是我见过的最好的解释!
猜你喜欢
  • 2015-12-11
  • 2017-03-20
  • 2017-05-06
  • 2019-03-16
  • 1970-01-01
  • 2021-12-29
  • 2019-06-27
  • 2019-09-29
  • 2021-07-15
相关资源
最近更新 更多