为什么TensorFlow重新实现了很多数学方程?

我在查看TensorFlow的API时注意到,许多已在Python和numpy中存在的数学操作都被重新实现了(或者至少被赋予了TensorFlow的接口)。例如:

enter image description here

这样做的理由是什么呢?

我一直在他们的页面上搜索,但找不到他们这样做的原因。

不过我有一些猜测。我的主要猜测之一是,他们可能希望这些操作对实现的神经网络图产生反向传播效果。换句话说,就是实现它们的导数。这是否是原因之一?(希望我知道如何检查我的猜测是否正确)

例如,在线性回归的最基本示例中,人们定义了想要实现的预测函数:

product = tf.matmul(x,W)y = product + b

而不是

product = tf.matmul(x,W)y = tf.add(product, b)

不知何故,第一个实现不会干扰用于训练的随机梯度下降算法,所以使用numpy还是tf.add来训练可能并不重要?这是让我感到困惑的一个方面,我什么时候知道应该使用哪一个呢?

或者可能是性能原因?或者是为了让这些操作在需要时可以访问GPU?


回答:

你需要理解的是,你通过这些操作创建了一个tensorflow图,这意味着它们与numpy函数不同,它们是对这些函数的一种抽象。

你可能已经注意到,你需要创建一个会话,然后通过该会话评估函数才能得到结果,而使用numpy函数时它们是直接执行的。这是由于这个图及其函数定义了要做什么,就像写下一个公式一样,但要为特定的x(或其他任何东西)得到结果,你必须为x插入一个值。这就是你在通过会话和eval所做的事情。

因此,总结一下,你用tensorflow定义了一个图,这是一个函数的更抽象的表示,而且这个图在运行时不会被执行,它被定义后,将在你调用eval函数时执行,并通过该会话运行。

另外请注意,你不能直接混合使用numpy函数和tensorflow函数,但你可以定义自己的tensorflow函数(https://www.tensorflow.org/versions/r0.9/how_tos/adding_an_op/index.html

顺便说一句,我猜大多数tensorflow函数在底层是使用numpy的。:)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注