为什么将TensorFlow用于卷积神经网络

时间:2017-01-05 15:52:35

标签: machine-learning tensorflow conv-neural-network

我最近在Coursera上接受了Andrew Ng的演出。之后我转向Python并使用Pandas,Numpy,Sklearn来实现ML算法。现在在冲浪的时候,我遇到了tensorFLow并发现它非常棒,并实现了这个example,它将MNIST数据作为输入。 但我不确定为什么使用库(TensorFlow)? 我们没有进行任何并行计算,因为在上一个时期更新的权重用于下一个? 我发现很难找到使用这样一个图书馆的理由吗?

2 个答案:

答案 0 :(得分:2)

TensorFlow在训练卷积神经网络(以及许多其他机器学习模型)时提供了几种形式的并行性,包括:

  1. 个别操作中的并行性(例如tf.nn.conv2d()tf.matmul())。这些操作为多核CPU和GPU提供了高效的并行实现,TensorFlow在任何可用的地方都使用这些实现。

  2. 操作之间的并行。 TensorFlow使用模型的数据流图表表示,并且有两个节点没有通过数据流图中的有向路径连接,这些节点可以并行执行。例如,Inception图像识别模型在其数据流图中有许多并行分支(参见this paper中的图3),TensorFlow可以利用它来同时运行许多操作。 AlexNet paper还描述了如何使用"模型并行性"在模型的不同部分上并行运行操作,TensorFlow支持使用相同的机制。

  3. 模型副本之间的并行性。 TensorFlow也是为distributed execution设计的。并行训练的一种常见方案("数据并行")涉及在一组相同的工作人员中分割数据集,对每个工作人员执行相同的训练计算以获取不同的数据,并在工作人员之间共享模型参数

  4. 此外,TensorFlow和Theano等库可以在处理模型的整个数据流图时执行各种优化。例如,它们可以消除常见的子表达式,避免重新计算常量值,并生成更有效的融合代码。

答案 1 :(得分:0)

您可以在sklearn或其他库中找到预烘焙模型,但TensorFlow允许快速迭代自定义机器学习模型。它还附带a ton of useful functions你必须(并且可能不应该)写自己。

对我来说,它不是关于性能(尽管它们肯定关心性能),而是关于如何快速地推出神经网络。