TF渐变问题

时间:2019-02-13 15:36:26

标签: python tensorflow

我正在尝试将@tf.custom gradient用于RNN中的一层,并遇到以下问题:

当我计算输出层中的损失相对于隐藏层中权重的梯度时,会得到梯度值,但是当我尝试计算隐藏层的输出相对于该层输入的梯度时或层中的状态(y=f(x)并计算dy/dx),我得到None

我正在使用tf.gradients来计算梯度。我正在做第二部分,以查看是否正确实现了自定义渐变。

这是隐藏状态和输出的激活功能:

@tf.custom_gradient
def _calcualte_crossings(x):
    """input :x : a 2D tensor with batch x n
    outputs a tensor with the same size as x
    and values of 0 or 1 depending on comparison between
    x and threshold"""
    dtype=x.dtype
    res=tf.greater_equal(x,0.0)

    def grad(dy):
        # calculate 1-|x|
        temp=1-tf.abs(x)
        dyres=tf.scalar_mul(0.3,tf.maximum(temp,0.0))
        return dyres

    return tf.cast(res,dtype=dtype), grad

系统信息

  • 我是否编写了自定义代码(与使用TensorFlow中提供的股票示例脚本相对):是
  • OS平台和发行版(例如Linux Ubuntu 16.04):Linux Ubuntu 18.04
  • 从(源或二进制)安装的TensorFlow:
  • TensorFlow版本(使用下面的命令):v1.12.0-0-ga6d8ffae09 1.12.0
  • Python版本:Python 3.6.7
  • Bazel版本(如果从源代码编译):
  • GCC /编译器版本(如果从源代码编译):
  • CUDA / cuDNN版本:9.0,V9.0.176
  • GPU模型和内存:GeForce GT 750M

0 个答案:

没有答案