theano小于功能给出了错误的答案

时间:2016-12-19 16:16:42

标签: python deep-learning theano theano.scan

以下是代码段:

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”不可行的原因。

由于

0 个答案:

没有答案