我正在研究一个 GAN,它获取形状为 (batch_size, 10) 的随机种子并返回形状为 (batch_size, 50) 的张量。
当我尝试训练生成器时,它的梯度始终为 None。
我尝试冻结判别器参数并训练一个包含生成器和判别器的模型,我也尝试为生成器编写自定义训练函数,但都失败了。
这是我训练生成器的代码:
@tf.function
def TrainGenerator(generator, discriminator, optimizer):
X_gan = tf.random.uniform((32, 10))
y_gan = tf.ones((32, 1))
with tf.GradientTape() as tape:
y_pred = discriminator(generator(X_gan, training=True), training=False)
main_loss = tf.reduce_mean(keras.losses.binary_crossentropy(y_gan, y_pred))
loss = tf.add_n([main_loss] + generator.losses)
gradients = tape.gradient(loss, generator.trainable_variables)
optimizer.apply_gradients(zip(gradients, generator.trainable_variables))
return loss
这是我得到的错误:
ValueError: No gradients provided for any variable:
感谢您的帮助。