TensorFlow是一个完整的机器学习库吗?


11

我是TensorFlow的新手,在使用它之前,我需要了解TensorFlow的功能和缺点。我知道这是一个深度学习框架,但除了我们可以在张量流中使用的其他机器学习算法之外。例如我们可以使用TensorFlow使用SVM还是随机森林?(我知道这听起来很疯狂)

简而言之,我想知道TensorFlow支持哪些机器学习算法。仅仅是深度学习还是更多?


1

3
为了确保:TensorFlow不是深度学习库。Keras(可以使用TensorFlow作为后端)就是这样一个库。TensorFlow是处理繁重的计算(使用计算图)以便在多种硬件(CPU,GPU等)上执行的明智方法。
罗宾

Answers:


15

这是一个过分的简化,但是今天基本上有两种类型的机器学习库可用:

  1. 深度学习(CNN,RNN,全连接网络,线性模型)
  2. 其他所有内容(SVM,GBM,随机森林,朴素贝叶斯,K-NN等)

这样做的原因是,深度学习比其他更传统的训练方法要占用更多的计算资源,因此需要对库进行高度专业化(例如,使用GPU和分布式功能)。如果您正在使用Python,并且正在寻找算法范围最广的软件包,请尝试scikit-learn。实际上,如果您想使用深度学习和更传统的方法,则需要使用多个库。没有“完整的”程序包。


1
这个答案在两年后仍然有效吗?从那时起,TensorFlow似乎发展了很多。
约翰·沙利文

7

TensorFlow特别适用于深度学习,即具有许多层和怪异拓扑的神经网络。

而已。它是Theano的替代产品,但由Google开发。

在TensorFlow和Theano中,您都可以进行符号编程。您以代数运算的形式定义神经网络(这些节点乘以这些权重,然后应用非线性变换,等等),其内部由图形表示(在TensorFlow的情况下,但是而不是Theano,您实际上可以看到以便调试您的神经网络)。

然后,TensorFlow(或Theano)提供优化算法,这些繁琐的工作需要弄清楚什么权重最小化您想要最小化的任何成本函数。如果您的神经网络旨在解决回归问题,则可能需要最小化预测值和真实值之间的平方差之和。TensorFlow进行繁琐的工作来区分您的成本函数以及所有其他功能。

编辑:忘了提及,当然,SVM可以看作是一种神经网络,因此,显然,您可以使用TensorFlow优化工具训练SVM。但是TensorFlow仅附带基于梯度下降的优化器,除非您有很多观察结果,否则用于训练SVM有点愚蠢,因为有一些针对SVM的特定优化器不会卡在局部最小值中。

另外,可能值得一提的是,TensorFlow和Theano是相当底层的框架。大多数人使用在其之上构建的框架,并且更易于使用。在这里我不会提出任何建议,因为这会引起自己的讨论。请参阅此处有关易于使用的软件包的建议


1
Theano不是由Google开发的。根据他们的网站,它“主要由学者开发”。Tensorflow 由Google开发
丹迪斯顿

1
@dantiston是的,我知道。我的意思是说“ TensorFlow是Theano的替代品,而TensorFlow是Google开发的”。我指的是TensorFlow,而不是Theano。措辞不好,对不起。
里卡多·克鲁兹

5

瑞安·佐蒂(Ryan Zotti)提供了一个很好的答案,但是这种情况正在改变。通过向中添加Random ForestGradient Boosting和Bayesian方法TensorFlow,它正朝着成为一站式解决方案的方向发展。这里列出更多传统算法。TensorFlow具有特别的前景,因为它可以很好地扩展并支持GPU操作。但是,scikit learn在传统的一站式商店中,您可以找到许多标准算法。它们通常不是最新的,也不是最好的,因此您也可能需要专门的库。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.