Theano符号命名用法

时间:2016-11-22 06:14:18

标签: python python-2.7 theano

说,我们已经初始化了一个变量:

import theano.tensor as T
x = T.dscalar('x')

我不理解的是字符串参数的目的。根据文件:

  

通过使用字符串参数调用T.dscalar,可以创建变量   表示具有给定名称的浮点标量。如果   如果不提供参数,则该符号将为未命名。名字不是   需要,但他们可以帮助调试。

我不确定它究竟意味着什么。如何使用这个论点以及它在哪些情况下是相关的?

目前,所呈现的代码

from theano import function
x = T.dscalar('x')
y = T.dscalar('y')
z = x + y
f = function([x, y], z)
如果我从初始化

中删除参数,

也会运行

x = T.dscalar()
y = T.dscalar()

或使用任何其他符号,即使两者都相同,功能似乎也无法改变。

令人困惑的是,变量和参数都是' x'。以不同的名称x = T.dscalar('var1')命名它是否有用?

那么,这个论点在什么情况下有用?

1 个答案:

答案 0 :(得分:1)

调试。

import theano as th
import theano.tensor as T
x = T.scalar()
y = T.scalar()
th.printing.pp(x+y)
#'(<TensorType(float32, scalar)> + <TensorType(float32, scalar)>)'
x = T.scalar('x')
y = T.scalar('y')
th.printing.pp(x+y)
#'(x + y)'

还有这个:

>>> x,y = T.scalars('xy')
>>> fn = th.function([x,y], x+y)
>>> th.printing.debugprint(fn)
HostFromGpu(gpuarray) [id A] ''   3
 |GpuElemwise{Add}[(0, 0)]<gpuarray> [id B] ''   2
   |GpuFromHost<None> [id C] ''   1
   | |x [id D]
   |GpuFromHost<None> [id E] ''   0
     |y [id F]

如果你有一个大型模型,给出符号变量,当你拨打theano.printing.pptheano.printing.debugprint时,某些名称可以真正有用。

有时,模型可能会因形状不匹配或其他错误而崩溃,如果exception_verbosity = high中有.theanorc,相关模型图会像theano.printing.debugprint一样转储。使用已定义的名称,转储可能看起来更好,并减少您在调试中花费的时间。

相关问题