2014-06-18 43 views
0

我試圖模擬repeat-until循環中Theano暗紋循環錯誤:在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' 

我會很感激,如果有人可以幫助我理解錯誤。我假設AttributeError不是指ab,因爲我可以打印他們的dtype,並看到他們確實有一個。除此之外,我無法理解它。

[編輯]這不是一個致命的錯誤。代碼正常運行,並且進程以退出代碼0結束。它看起來像Theano試圖優化圖形並且不能這樣做,這並不影響程序。

+0

你能提供完整的追溯? – nouiz

+0

我編輯了問題,以便它包含完整的回溯。 –

回答

1

回溯表明,在函數equal_compuations()中,我們沒有覆蓋所有的情況,當做一些比較。

我有它修復這裏PR:

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

感謝報告。

您的[編輯]部分,表明我切記了一些錯誤消息。如果這種情況在優化過程中發出警告,則意味着優化只會被忽略。優化可能不適用,但有可能在修復時適用優化。如果是這樣的話,修復可能會加快一些。

+0

這個PR現在合併在Theano的開發版本中。 – nouiz