Порог в Теано

Есть ли способ установить пороговые значения в тензоре Theano? Например, если v = t.vector(), я хотел бы создать другой тензор w, который содержит те же значения, что и v, за исключением того, что те, которые превышают определенный порог T, заменяются самим T:

v = [1, 2, 3, 100, 200, 300]
T = 100
w = [1, 2, 3, 100, 100, 100]

В общем, есть ли стандартная структура для создания собственных операций с тензорами?


person John Jaques    schedule 23.07.2014    source источник


Ответы (1)


Вот код, который это делает. Используйте функцию клипа.

import theano
v = theano.tensor.vector()
f = theano.function([v], theano.tensor.clip(v, 0, 100))
f([1, 2, 3, 100, 200, 300])
# array([   1.,    2.,    3.,  100.,  100.,  100.])

Если вам не нужна минута, вы можете использовать переключатель:

import theano
v = theano.tensor.vector()
f = theano.function([v], theano.tensor.clip(v, 0, 100))
f([1, 2, 3, 100, 200, 300])
# array([   1.,    2.,    3.,  100.,  100.,  100.])
f = theano.function([v], theano.tensor.switch(v<100, v, 100))
f([1, 2, 3, 100, 200, 300])
# array([   1.,    2.,    3.,  100.,  100.,  100.])
person nouiz    schedule 23.07.2014