Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么tensorflow中tanh的梯度为'grad=dy*(1-y*y)`_Tensorflow_Math_Deep Learning_Gradient - Fatal编程技术网

为什么tensorflow中tanh的梯度为'grad=dy*(1-y*y)`

为什么tensorflow中tanh的梯度为'grad=dy*(1-y*y)`,tensorflow,math,deep-learning,gradient,Tensorflow,Math,Deep Learning,Gradient,表示grad=dy*(1-y*y),其中y=tanh(x) 但是我认为既然dy/dx=1-y*y,其中y=tanh(x),那么grad应该是dy/(1-y*y)。我哪里错了?像dy/dx这样的表达式是a,它不是一个实际的分数。像使用分子和分母一样,单独移动dy或dx是没有意义的 数学上,已知d(tanh(x))/dx=1-(tanh(x))^2。TensorFlow“向后”计算渐变(称为,或更一般地说)。这意味着,一般来说,在到达计算“外部”函数的梯度g(tanh(x))的步骤后,我们将计算ta

表示
grad=dy*(1-y*y)
,其中
y=tanh(x)


但是我认为既然
dy/dx=1-y*y
,其中
y=tanh(x)
,那么grad应该是
dy/(1-y*y)
。我哪里错了?

dy/dx
这样的表达式是a,它不是一个实际的分数。像使用分子和分母一样,单独移动
dy
dx
是没有意义的

数学上,已知
d(tanh(x))/dx=1-(tanh(x))^2
。TensorFlow“向后”计算渐变(称为,或更一般地说)。这意味着,一般来说,在到达计算“外部”函数的梯度
g(tanh(x))
的步骤后,我们将计算
tanh(x)
g
表示应用于
tanh
输出以达到计算梯度值的所有操作。这个函数的导数,根据,是
d(g(tanh(x))/dx=d(g(tanh(x))/d(tanh(x))*d(tanh(x))/dx
。第一个因子,
d(tanh(x))/d(tanh(x))
,是直到
tanh
的反向累积梯度,即所有后续操作的导数,是函数文档中
dy
的值。因此,您只需计算
d(tanh(x))/dx
(即
(1-y*y)
,因为
y=tanh(x)
)并将其乘以给定的
dy
。所得值将进一步传播回最初产生输入
x
tanh
的操作,并在计算该梯度时成为
dy
值,依此类推,直到达到梯度源