Tensorflow GAN中的三个损失函数

问题描述 投票:0回答:1

我一直在关注O'Reilly的指南,当谈到他们的训练和失去功能时,我感到很困惑。

d_loss_real = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(Dx,tf.ones_like(Dx)))
d_loss_fake =tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(Dg,tf.zeros_like(Dg)))

g_loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(Dg, tf.ones_like(Dg)))

这感觉就像应该将d_loss_real和d_loss_fake添加到单个变量中,这应该是最小化的,如下所示:

d_loss = d_loss_real + d_loss_fake

d_trainer = tf.train.AdamOptimizer(0.0003).minimize(d_loss, var_list=d_vars)

然而,指南指定了三个训练函数而不是两个,一个用于d_loss_real,d_loss_fake和g_loss。

# Train the discriminator
d_trainer_fake = tf.train.AdamOptimizer(0.0003).minimize(d_loss_fake, 
var_list=d_vars)
d_trainer_real = tf.train.AdamOptimizer(0.0003).minimize(d_loss_real, 
var_list=d_vars)
# Train the generator
g_trainer = tf.train.AdamOptimizer(0.0001).minimize(g_loss, var_list=g_vars)

我是否认为这是错的,或者我错过了什么?

python python-3.x machine-learning tensorflow neural-network
1个回答
0
投票

你只需要两个优化器,一个用于发生器,一个用于鉴别器网络:

1)discriminator_trainer = tf.train.AdamOptimizer(0.0003).minimize(d_loss,var_list = d_vars)

2)generator_trainer = tf.train.GradientDescentOptimizer(0.0003).minimize(g_loss,var_list = g_vars)

- 在您的发电机网络中使用梯度下降优化器,以获得更好的结果。

© www.soinside.com 2019 - 2024. All rights reserved.