2013-11-27 5 views
5

Я пытаюсь найти значение s=max(ele, 0) element-wise на матрице в theano. У меня нет большого опыта работы с theano.Theano element wise maximum

До сих пор я

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

Это работает, но не очень, и я думал, что я должен быть в состоянии использовать theano.tensor.maximum для этого.

В MATLAB, чтобы делать то, что я хочу сделать, я бы просто написать [email protected](x) max (x, zeros (size (x)))

ответ

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()' не эквивалентны. Мне потребовалось немного времени, чтобы понять! –

2

Я видел это реализовано как

s = x*(x>0) 

несколько раз. Не знаю, если это быстрее, чем T.maximum()

Смежные вопросы