没有为任何变量提供渐变 - 优化器错误

时间:2018-01-31 15:59:25

标签: python

我计算如下:

     #Compute the cost
     cost = tf.reduce_mean(tf.square(y - out))

     minimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

运行minimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)后,我收到此错误:

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

这条路在哪里错了,为什么?

1 个答案:

答案 0 :(得分:1)

简短版本:导致错误消息的问题是您的模型函数不使用任何张量流变量。

含义:您定义的唯一TF.variable是w,它不在模型函数中使用。因此,在模型中没有关于张量流可以关于损失函数进行优化的权利。如果您希望tensorflow优化系数,请在模型定义中使用变量w而不是常数系数c,并确保它们具有相同的大小。

此外,您在模型定义中使用非tensorflow函数,如append函数而不是tf.append。这增加了问题。

您的代码中存在许多问题。例如,您双重定义了全局变量初始化程序和会话。

我想基本的问题是你还没有理解低级tensorflow API的基本结构。显然,图形和会话定义的概念。首先需要定义一个包含模型完整定义的图形,并仅使用tensorflow函数。之后,您才会开始一个会话,在该会话中初始化wights并开始训练它。