machine-learning - 为什么使用 TensorFlow 进行卷积神经网络

标签 machine-learning tensorflow conv-neural-network

我最近在 Coursera 上学习了 Andrew Ng 的类(class)。之后我转向Python并使用Pandas、Numpy、Sklearn来实现ML算法。现在,在冲浪时,我遇到了tensorFLow,发现它非常神奇,并实现了这个example它以 MNIST 数据作为输入。 但我不确定为什么要使用诸如库(TensorFlow)之类的? 我们没有进行任何并行计算,因为上一个时期更新的权重将在下一个时期使用??? 我发现很难找到使用这样一个库的理由?

最佳答案

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

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

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

  3. 模型副本之间的并行性。 TensorFlow 还专为 distributed execution 设计。并行训练的一种常见方案(“数据并行性”)涉及将数据集分片到一组相同的工作人员上,对每个工作人员针对不同的数据执行相同的训练计算,并在工作人员之间共享模型参数。

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

关于machine-learning - 为什么使用 TensorFlow 进行卷积神经网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41489238/

相关文章:

machine-learning - 如何处理机器学习分类问题的小型且不平衡的数据集

machine-learning - 无法让简单的二元分类器工作

tensorflow - Keras 获取中间层的输出

machine-learning - 如何防止懒惰的卷积神经网络?

r - 如何获得逻辑回归模型测试项目的错误模式?

machine-learning - 在caffe中定义新层时如何获取学习率或迭代次数

python - 检查输入时出错 : expected embedding_1 input to have shape but got shape

python - 如何保存keras中神经网络层的输出

Tensorflow Estimator - 对 Eval 数据集的定期评估

python - tensorflow-serving-apis - 找不到 python 文档