使用不同的方法在张量流中实现相同的函数将得到相同的梯度?

时间:2017-11-17 08:29:46

标签: tensorflow

例如,我想实现漏洞relu。

有两种方法:

  • 第一种方式:
  

x = tf.where(tf.greater(x,0.0),x,alpha * x)

  • 第二种方式:
  

mask = tf.cast(tf.greater(x,0.0),dtype = tf.float32)

     

x = 1.0 * mask * x + alpha *(1 - mask)* x

两种方式会有相同的反向传播吗?

1 个答案:

答案 0 :(得分:0)

理论答案:如果两个函数相同,意味着它们为所有给定输入产生完全相同的输出,那么两个函数的梯度也将完全相同。

在实践中,我猜这是因为在乘以几个函数的梯度时数值不精确而不成立。但是,对于合理的功能,差异应该保持很小。