Gan目前用于图像领域比较多一些,各式各样的gan都围绕着图像生成。
Gan包括两个网络,一个是生成网络(G_net),一个是判别网络(D_net)。由于目前主要是用于图像生成,因此G_net和D_net都是cnn,只是G_net输出的层是图片,而D_net输出的是判别结果(分类)。
既然涉及到两个网络,那么两个网络都需要同时训练,有两个网络当然就会有两个loss,我们当然不能只优化G_net或者D_net其中一个网络的loss。肯定需要同时进行的。
以pix2pix为例:
判别网络:total_disc_loss = real_loss + generated_loss
其中real_loss是判别器对真实图片判断出的结果的loss,generated_loss是判别器对假图片判断出的结果的loss。
生成网络:total_gen_loss = gan_loss + gan_loss + (LAMBDA * l1_loss)
其中,l1_loss是对真假图片计算 的mse或者mae, gan_loss是对判别器结果的loss,LAMBDA=100