没有为任何变量提供渐变:['Variable:0', 'Variable:0']

数据挖掘 机器学习 张量流 回归 梯度下降 python-3.x
2022-02-28 15:38:48

我将 Python 3.6 和 Tensorflow 2.0 用于以下线性回归代码:

tx = tf.constant(x, dtype=tf.float32)
ty = tf.constant(y, dtype=tf.float32)
    
tw = tf.Variable(initial_value=np.random.randn(), dtype=tf.float32, trainable=True)
tb = tf.Variable(initial_value=0, dtype=tf.float32, trainable=True)
tyhat = tx * tw  + tb
    
cost = lambda: tf.reduce_mean(tf.square(tyhat-ty))
optimizer = tf.optimizers.SGD(0.01)
train = optimizer.minimize(cost, var_list = [tw,tb])

并得到一个错误:没有为任何变量提供渐变:['Variable:0', 'Variable:0']

有什么帮助吗?

1个回答
tw = tf.Variable(initial_value=np.random.randn(), dtype=tf.float32, trainable=True)
tb = tf.Variable(initial_value=0, dtype=tf.float32, trainable=True)

cost =  lambda :tf.reduce_mean(tf.square(tx*tw+tb-ty))
optimizer = tf.keras.optimizers.SGD(0.01)
train = optimizer.minimize(cost, var_list = [tw,tb])

直接在成本函数中而不是通过 yhat 引用 tw 和 tb。它会起作用的。