gpt4 book ai didi

python - Tensorflow GAN 没有为任何变量提供梯度

转载 作者:行者123 更新时间:2023-12-01 02:01:47 24 4
gpt4 key购买 nike

我正在尝试在 tensorflow 中构建 LSTM-GAN。

仅在鉴别器网络中,当我尝试计算损失时,我会得到错误

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

鉴别器网络看起来像这样

## Descriminator net
x = tf.placeholder("float", [None, time_steps, num_inputs], name='x')
d_w = tf.Variable(tf.random_normal([num_units,1]), name='d_w')
d_b = tf.Variable(tf.random_normal([1]), name='d_b')

des_vars = [d_w, d_b]

def descriminator(x):
inp = tf.unstack(x, time_steps, 1)
lstm_layer = rnn.BasicLSTMCell(num_units,forget_bias=1, reuse=tf.AUTO_REUSE)
outputs, _ = rnn.static_rnn(lstm_layer, inp, dtype='float32')
descriminator_logit = tf.nn.sigmoid(tf.matmul(outputs[-1],g_w)+g_b)

return descriminator_logit

g_prediction = generator(Z)
d_real = descriminator(x)
d_fake = descriminator(Y)


d_loss = -tf.reduce_mean( tf.log(d_real) + tf.log(1. - d_fake) )
g_loss = -tf.reduce_mean( tf.log(d_fake) )

g_optimizer = tf.train.AdamOptimizer().minimize(g_loss, var_list=gen_vars)
d_optimizer = tf.train.AdamOptimizer().minimize(d_loss, var_list=des_vars)

我不确定是哪一部分破坏了它。我想这可能是 d_fake Variavle。 Ytf.placeholder与 x 形状相同,但重新格式化,因此它采用生成器网络的输出(这是在 tf.session() 内完成的)

知道为什么会出现这种情况吗?

最佳答案

des_vars 中的变量未被 g_lossd_loss 使用。您的鉴别器函数使用g_wg_b,但不使用d_wd_b

您可以通过使用 TensorBoard 轻松查看哪些操作依赖于哪些变量。 。如果您在这种情况下使用它,您会看到 d_wd_bd_lossg_loss 断开连接code> 图中的操作。

关于python - Tensorflow GAN 没有为任何变量提供梯度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49544495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com