我有一堆变量(形状相同),其中我必须根据self.action_holder
的值选择一个进行更新。所以我将这些变量存储在列表 self.weights
中。这是我的更新规则
self.update = optimizer.minimize(self.loss, var_list = [tf.gather(self.weights, self.action_holder)])
。
这会导致错误
No gradients provided for any variable, check your graph for ops that do not support gradients, between variables ['Tensor("GatherV2:0", shape=(2, 10, 10), dtype=float32)'] and loss Tensor("mul:0", dtype=float32).
但是,如果我将更新代码更改为此
self.update = optimizer.minimize(self.loss, var_list = [self.weights[0]])
。
不会抛出任何错误。但是我一直在self.weights
更新第一个重量,这不是我想要的更新。
我在这里很困惑。 Tensorflow中的tf.gather(list, index)
= list[index]
是真的吗?为什么不在这里工作?我错过了什么吗?