我正在尝试在 Theano 中模拟一个重复循环:
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'
如果有人可以帮助我理解错误,我将不胜感激。我假设 theAttributeError
不是指a
or b
,因为我可以打印它们dtype
并看到它们确实有一个。除此之外,我无法理解它。
[编辑] 这不是致命错误。代码正常运行,进程以退出代码 0 结束。看起来 Theano 正在尝试优化图形但未能这样做,这并没有真正影响程序。