例如,我想实现漏洞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
两种方式会有相同的反向传播吗?
答案 0 :(得分:0)
理论答案:如果两个函数相同,意味着它们为所有给定输入产生完全相同的输出,那么两个函数的梯度也将完全相同。
在实践中,我猜这是因为在乘以几个函数的梯度时数值不精确而不成立。但是,对于合理的功能,差异应该保持很小。