theano.function - 它是如何工作的?

时间:2016-08-13 09:06:09

标签: python function theano

我已经阅读了官方文档并阅读了https://github.com/Theano/theano/blob/ddfd7d239a1e656cee850cdbc548da63f349c37d/theano/compile/function.py#L74-L324中的评论,并且有一个人告诉我它告诉Theano将符号计算图编译成一个可以运行的实际程序。

但是,我仍然无法弄清楚它是如何知道的,例如在这段代码中:

self.update_fun = theano.function(
        inputs=[self.input_mat, self.output_mat],
        outputs=self.cost,
        updates=updates,
        allow_input_downcast=True)

如果没有身体,如​​何计算所有这些?我的意思是所有这些东西都是在这些粘贴的行之上的某些代码中计算出来的,但是... isano.function实际上是在寻找源代码来找出如何计算这些东西?我只是在猜测,并且非常想知道它是如何运作的。

也许我在解释中遇到的问题是" 它告诉Theano将符号计算图编译成实际的程序"是我不知道什么是符号计算图,所以这将是另一个与前一个非常相关的问题。

将不胜感激。

1 个答案:

答案 0 :(得分:2)

我不是专家,但我的解释是:

是的,'body'在上面的代码中定义。但是theano并没有像python解释器那样直接“解释”那个代码。有问题的代码只是创建theano个对象,允许theano编译所需的函数。我们举一个简单的例子:如何创建函数f(x) = 2x + x**3

首先创建一个符号输入变量x。然后通过构建f(x)的符号表达式来定义函数的“主体”:

y = 2 * x + x**3 # defines a new symbolic variable which depends on x

y对象相当于表示公式的图形。像Plus(Times(2,x), Power(x,3))这样的东西。 您最后使用theano.functioninput=x致电output=y。然后theano发挥其魔力并根据f(x) = y = 2 * x + x**3中包含的信息(图表)编译实际函数y

它能让事情更清楚吗?