Tensorflow tf.sign如何与反向传播一起工作?

Tensorflow tf.sign如何与反向传播一起工作?,tensorflow,Tensorflow,我从TensorFlow开始,尝试创建一个二进制网络。更具体地说,我正在寻找一个哈希网络,它将图像编码为大小为n的二进制向量。所以我有一个经典的网络,我对softmax之前的最后一层进行了二值化 TensorFlow提供了一个tf.sign函数,可以做到这一点,但我无法理解反向传播在实践中是如何工作的,因为它不是连续的 有什么想法吗?不幸的是tf.sign()的梯度总是被定义为0(可能是因为没有好的方法来定义它。) @ops.RegisterGradient("Sign") def _Sign

我从TensorFlow开始,尝试创建一个二进制网络。更具体地说,我正在寻找一个哈希网络,它将图像编码为大小为n的二进制向量。所以我有一个经典的网络,我对softmax之前的最后一层进行了二值化

TensorFlow提供了一个
tf.sign
函数,可以做到这一点,但我无法理解反向传播在实践中是如何工作的,因为它不是连续的


有什么想法吗?

不幸的是
tf.sign()
的梯度总是被定义为
0
(可能是因为没有好的方法来定义它。)

@ops.RegisterGradient("Sign")
def _SignGrad(op, _):
  """Returns 0."""
  x = op.inputs[0]
  return array_ops.zeros(array_ops.shape(x), dtype=x.dtype)