Theano模糊的循环错误

时间:2014-06-18 12:58:30

标签: python theano

我正试图在Theano中模拟一个repeat-until循环:

def method_a(arguments):
    ...
    return result, theano.scan.until(t.eq(a,b))

我遇到了以下奇怪的行为。让b成为常数。每当a为常数时,一切正常。但是,当a是标量时,我会收到与优化相关的错误:

ERROR (theano.gof.opt): SeqOptimizer apply <theano.gof.opt.EquilibriumOptimizer object at 0x110d0d8d0>
ERROR (theano.gof.opt): Traceback:
ERROR (theano.gof.opt): Traceback (most recent call last):
  File "[...]/lib/python2.7/site-packages/theano/gof/opt.py", line 196, in apply
    sub_prof = optimizer.optimize(fgraph)
  File "[...]/python2.7/site-packages/theano/gof/opt.py", line 82, in optimize
    ret = self.apply(fgraph, *args, **kwargs)
  File "[...]/python2.7/site-packages/theano/gof/opt.py", line 1665, in apply
    gopt.apply(fgraph)
  File "[...]/python2.7/site-packages/theano/scan_module/scan_opt.py", line 1300, in apply
    if self.belongs_to_set(nd, subset):
  File "[...]/python2.7/site-packages/theano/scan_module/scan_opt.py", line 1286, in belongs_to_set
    rep.op.inputs)
  File "[...]/python2.7/site-packages/theano/scan_module/scan_utils.py", line 452, in equal_computations
    dx.type.dtype == dy.type.dtype and
AttributeError: 'NoneTypeT' object has no attribute 'dtype'

如果有人能帮我理解错误,我会很感激。我假设AttributeError没有引用ab,因为我可以打印他们的dtype并看到他们确实有一个{{1}}。除此之外,我无法理解它。

[编辑]这不是致命的错误。代码正常运行,进程以退出代码0结束。看起来Theano正在尝试优化图表,但没有这样做,这对程序没有任何影响。

1 个答案:

答案 0 :(得分:1)

回溯表明在函数equal_compuations()中,我们没有涵盖所有情况,在进行一些比较时。

我在这里有一个PR修复它:

https://github.com/Theano/Theano/pull/1928

感谢您的报告。

您的[编辑]部分,表明您已删除部分错误消息。如果在优化期间发生这种情况并发出警告,则表示刚刚跳过优化。优化可能不适用,但有可能通过修复,现在优化适用。如果是这种情况,可能会加快修复速度。