ValueError:未为任何变量提供渐变,请检查图形以了解不支持渐变的操作

时间:2019-03-14 01:37:31

标签: tensorflow

我有一个简单的代码,如下所示。当我尝试运行它时,出现以下错误:

ValueError: No gradients provided for any variable, check your graph for ops that do not support gradients, between variables ["<tf.Variable 'Variable:0' shape=(2,) dtype=int32_ref>"] and loss Tensor("Sum:0", shape=(), dtype=float32)

知道我该怎么办吗?谢谢。

import tensorflow as tf

def compute_objfunc(x1, x2, shift):

    part11 = tf.slice(x1, [shift[0]], [100-shift[0]])
    part12 = tf.zeros((shift[0],), dtype=tf.float32)
    y1 = tf.concat([part11, part12], axis=0)

    part21 = tf.slice(x2, [shift[1]], [100-shift[1]])
    part22 = tf.zeros((shift[1],), dtype=tf.float32)
    y2 = tf.concat([part21, part22], axis=0)

    return tf.reduce_sum(y1+y2)

shift = tf.Variable([1, 2], dtype=tf.int32)

x1 = tf.placeholder("float", [100,])
x2 = tf.placeholder("float", [200,])

J = compute_objfunc(x1, x2, shift)

train_op = tf.train.AdamOptimizer(0.01).minimize(J)

1 个答案:

答案 0 :(得分:0)

这里只有一个变量shift。由于它是整数变量,因此不会产生任何梯度。 (浮点变量会产生梯度。当您认为应该使用梯度对变量的值进行微小更改,但整数变量的值不能小于1时,整数变量没有梯度是有意义的。) / p>

x1x2应该是变量而不是占位符吗?