Theano逐元素最大值

5

我正在尝试在Theano中对矩阵进行逐元素操作,找到s=max(ele, 0)的值。我对Theano没有太多经验。

目前为止,我的代码是:

x = theano.tensor.dmatrix('x')
s = (x + abs(x)) / 2  # poor man's trick
linmax = function([x], s)

这个方法可行,但不够优雅,我认为应该可以使用 theano.tensor.maximum 来实现。

在matlab中,要实现我想要的功能,只需要编写以下代码:linmax=@(x) max (x, zeros (size (x)))

2个回答

8

对我来说这个有效:

import theano.tensor as T
from theano import function

x = T.dmatrix('x')
linmax = function([x], T.maximum(x,0))

测试:

linmax([[-1,-2],[3,4]])

输出:

array([[0.,0.],[3.,4.]])

1
注意:T.max()T.maximum()不是等价的。花了我一点时间才意识到! - aspiring_sarge

2

我曾看过它被实现为

s = x*(x>0)

多次尝试后,不确定这是否比T.maximum()更快。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接