救命,我已经在这儿卡了半个月了。
最近在跑一个Gan模型,但是怎么都训练不出来,真的好头疼。
——
1、单独测试生成器,只使用MSE_Loss,可以生成图像,只是不太清晰,就像这样:(上面是groundtruth,下面是生成的)
2、单独测试判别器,用vanilla loss的softplus变形,测试噪音和真实图像的判别结果,由Sigmoid输出:
结果都挺好的,生成器可以准确生成图像,判别器可以准确判别d_lr结果,但是对抗训练就会出问题!
1、在lr 和 d_lr学习率都为0.0001的条件下,生成的图像和判别器输出如下:
可以看到,判别器对真实图像的分数维持在0.55左右,生成图像的分数维持在0.44左右,d_loss和g_loss小范围波动
2、我怀疑是不是两个分数差的不多,导致生成器没办法获得有用的信息,所以采用更新一次生成器,后面更新两次判别器的方法,结果如下:
这时候,真假样本相差的分数确实更大了,但是继续训练,就会出现:
直接两个都判为真,这是什么问题?
——
我的问题是,我的训练过程有没有什么问题?以及为什么多更新一次判别器会出现都判为真的情况?
大家有没有什么意见,还望不吝赐教!
【以下回答由 GPT 生成】
在训练GAN模型时,遇到困难是常见的。根据你提供的信息,以下是可能导致问题的原因和解决方案:
可以尝试调整生成器的学习率,以更好地优化生成器的性能。
判别器将两个样本都判为真:
此外,还有一些其他可能的解决方案可以尝试:
最后,GAN模型的训练也是一个非常复杂的过程,很难找到一个通用的解决方案,因此建议根据具体情况进行不同的尝试和实验,以找到最佳的训练策略。
可能是因为判别器在多次更新后变得更强大,能够准确地区分真实数据和生成数据。如果生成器没有得到相应的更新,它可能无法生成足够逼真的样本来欺骗判别器。这会导致判别器越来越自信地将所有生成的样本都判定为真实
人工智障不会很准的,除非训练参数特别合适