以下是代码段:
seqLen = 4
seq = np.repeat([seqLen-1],seqLen)
print seq
def step2(idx):
if T.lt(idx,seqLen-1):
return T.constant(True)
else:
return T.constant(False)
# return T.lt(idx,seqLen-1)
final,updates = theano.scan(step2,sequences=[T.arange(0,4)]
,outputs_info=None)
iter = theano.function([], outputs=[final],updates=updates)
result = iter()
print 'result', result
我得到的输出是 -
result [array([1, 1, 1, 1], dtype=int8)]
输出不应该是数组([1,1,1,0])。我无法理解序列'idx'是如何传递给step函数的。
它不应该在每个时间步骤发送T.arange(0,4)
的每个值,然后T.lt(idx,3)
应该仅为最后一个时间步返回false,否则为true。
更新:如果我将step2函数修改为 -
def step2(idx):
return T.lt(idx,seqLen-1)
然后我得到正确的输出为[1,1,1,0]。我需要使用条件语句作为if条件。有什么帮助吗?
更新2:我没有使用pythonic“if”构造,而是尝试了theano的'ifelse'而且它有效。但是我想根据条件执行一堆语句,这就是“ifelse”不可行的原因。
由于