这些库是否可以互换?
在这里https://stackshare.io/stackups/keras-vs-pytorch-vs-scikit-learn,似乎主要的区别是底层框架(至少对于PyTorch而言)。
是的,有很大的不同。
SciKit Learn是基于NumPy构建的通用机器学习库。它具有许多机器学习算法,例如支持向量机,随机森林以及用于通用数据预处理和后处理的大量实用程序。它不是神经网络框架。
PyTorch是一个深度学习框架,包括
一个类似于NumPy的矢量化数学库,但具有GPU支持和许多与神经网络相关的操作(例如softmax或各种激活)
Autograd-一种算法,可以根据基本操作自动计算函数的梯度
用于大规模优化的基于梯度的优化例程,专用于神经网络优化
神经网络相关实用程序功能
Keras是一个更高级别的深度学习框架,它抽象了许多细节,与PyTorch或TensorFlow相比,使代码更简单,更简洁,但其可破解性有限。它抽象出了计算后端,可以是TensorFlow,Theano或CNTK。它不支持PyTorch后端,但这并不是难以理解的-您可以将其视为上述内容的简化且精简的子集。
简而言之,如果您要使用“经典”非神经算法,那么PyTorch和Keras都不会对您有用。如果您正在进行深度学习,则scikit-learn对其实用部分可能仍然有用;除此之外,您将需要一个实际的深度学习框架,在这里您可以在Keras和PyTorch之间进行选择,但是您不太可能同时使用两者。这是非常主观的,但是在我看来,如果您正在研究一种新颖的算法,则您更有可能选择使用PyTorch(或TensorFlow或其他较低级别的框架)来提高灵活性。如果您要将已知且经过测试的算法用于新的问题设置,则可能希望使用Keras,因为它具有更高的简便性和更低的入门水平。