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

数据挖掘 机器学习
2021-09-18 04:47:40

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

总之,我想知道TensorFlow支持哪些机器学习算法。它只是深度学习还是更多?

3个回答

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

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

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

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

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

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

然后,TensorFlow(或 Theano)提供优化算法,这些算法可以完成繁重的工作,确定哪些权重可以最小化您想要最小化的任何成本函数。如果您的神经网络旨在解决回归问题,您可能希望最小化预测值和真实值之间的平方差之和。TensorFlow 完成了区分成本函数等繁重工作。

编辑:忘了提到,当然,支持向量机可以被视为一种神经网络,所以很明显,您可以使用 TensorFlow 优化工具训练支持向量机。但是 TensorFlow 只带有基于梯度下降的优化器,除非你有大量的观察,否则用它来训练 SVM 有点愚蠢,因为有特定的 SVM 优化器不会陷入局部最小值。

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

Ryan Zotti 提供了一个很好的答案,但这种情况正在改变。随着随机森林梯度提升和贝叶斯方法的加入TensorFlow,它正朝着成为一站式解决方案的方向发展。这里列出了更多的传统算法TensorFlow 具有特别的前景,因为它旨在很好地扩展并支持 GPU 操作。然而,scikit learn是传统的一站式商店,您可以在其中找到许多标准算法。它们通常不是最新最好的,因此您可能还需要专门的库。