簡體   English   中英

Tensorflow GAN中的三個損失函數

[英]Three loss functions in a Tensorflow GAN

我一直在關注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)

我認為這是錯誤的對嗎,還是我錯過了什么?

您只需要兩個優化器,一個用於生成器,一個用於鑒別器網絡:

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)

-在發電機網絡中使用梯度下降優化器以獲得更好的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM