Максимум по элементам Theano

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

До сих пор у меня есть

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)))


person Lyndon White    schedule 27.11.2013    source источник


Ответы (2)


Это работает для меня:

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.]])
person szmoore    schedule 27.11.2013
comment
Примечание. T.max() и T.maximum() не эквивалентны. Мне потребовалось немного времени, чтобы понять! - person aspiring_sarge; 25.02.2016

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

s = x*(x>0)

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

person pwohlhart    schedule 22.07.2014