为了获得T.gt()的用法,我编写了一个玩具代码。你知道吗
def f(data):
# return T.gt(data, 0)
if T.gt(data, 0):
print "1"
return -data
else:
print "2"
return data
a = T.scalar()
t = f(a)
print t.eval({a:-4})
我希望当a=-4时返回值为-4,当a=4时返回值为-4,但它总是满足条件并运行返回数据。
我不知道为什么。你能帮助我吗?你知道吗
Tags:
T.gt
是一个符号的函数;它不返回布尔值,而是返回一个表示符号表达式的对象,该表达式在以后编译和执行时将计算为布尔值。你知道吗因此,在Python中,
T.gt(...)
将始终被计算为True
,因为结果总是非None
。你知道吗如果要在Theano中使用条件表达式,则需要使用符号条件运算。有两种:
T.switch
和theano.ifelse.ifelse
。区别在于T.switch
是一个元素操作,接受张量条件,而ifelse
需要标量条件。你知道吗你的例子还有一个问题。即使代码是好的,它也总是返回负值。实际上,您的示例是这样的,如果输入为正,则返回其负,否则按原样返回输入(已经为负)。我还建议在
eval
函数上使用theano.function
。你知道吗您的示例可以更改为演示
ifelse
的工作方式,如下所示:相关问题 更多 >
编程相关推荐