我有一个简单的代码,如下所示。当我尝试运行它时,出现以下错误:
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)
答案 0 :(得分:0)
这里只有一个变量shift
。由于它是整数变量,因此不会产生任何梯度。 (浮点变量会产生梯度。当您认为应该使用梯度对变量的值进行微小更改,但整数变量的值不能小于1时,整数变量没有梯度是有意义的。) / p>
x1
和x2
应该是变量而不是占位符吗?