试图重新定义张量渐变函数以在theano中进行舍入

时间:2016-07-13 23:17:08

标签: gradient theano

我正在尝试找到一个变量的渐变,但由于我在手之前舍入了变量,theano的渐变函数将渐变记录为0(因为舍入是一个不连续的函数)。例如,

import theano
import theano.tensor as T

x = T.scalar()
y = T.round(x)**2

dy = T.grad(y, x)

df = theano.function(inputs=[x],outputs = dy)

print(df(3))

返回0.0,但我希望它返回2x。

有没有办法让T.round(x)的渐变像x一样?

1 个答案:

答案 0 :(得分:1)

实际上,如果函数具有不连续的域,它不会计算(“注册”?)梯度为零:相反,梯度将是未定义的(不能区分不连续的域)。

为什么要计算舍入变量的渐变?想想这个假定的“渐变”会产生什么(如果有的话)几何感。