weixin_49314420 2023-08-25 21:14 采纳率: 66.7%
浏览 4
已结题

Help!Gan模型训练的问题!

救命,我已经在这儿卡了半个月了。

最近在跑一个Gan模型,但是怎么都训练不出来,真的好头疼。
——

1、单独测试生成器,只使用MSE_Loss,可以生成图像,只是不太清晰,就像这样:(上面是groundtruth,下面是生成的)

img

2、单独测试判别器,用vanilla loss的softplus变形,测试噪音和真实图像的判别结果,由Sigmoid输出:

img


——

结果都挺好的,生成器可以准确生成图像,判别器可以准确判别d_lr结果,但是对抗训练就会出问题!
1、在lr 和 d_lr学习率都为0.0001的条件下,生成的图像判别器输出如下:

img

img

可以看到,判别器对真实图像的分数维持在0.55左右,生成图像的分数维持在0.44左右,d_loss和g_loss小范围波动
2、我怀疑是不是两个分数差的不多,导致生成器没办法获得有用的信息,所以采用更新一次生成器,后面更新两次判别器的方法,结果如下:

img

这时候,真假样本相差的分数确实更大了,但是继续训练,就会出现:

img

直接两个都判为真,这是什么问题?

——
我的问题是,我的训练过程有没有什么问题?以及为什么多更新一次判别器会出现都判为真的情况?
大家有没有什么意见,还望不吝赐教!

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-26 08:41
    关注

    【以下回答由 GPT 生成】

    在训练GAN模型时,遇到困难是常见的。根据你提供的信息,以下是可能导致问题的原因和解决方案:

    1. 生成器生成的图像清晰度不高:
    2. 可尝试使用像素级别的loss函数,如L1 loss或L2 loss,而不仅仅使用MSE loss。这些loss函数可以更好地捕捉到图像的细节。
    3. 可以尝试增加生成器的网络层数,以增加模型的复杂性和表示能力。
    4. 可以尝试调整生成器的学习率,以更好地优化生成器的性能。

    5. 判别器将两个样本都判为真:

    6. 多次更新判别器可能导致判别器过度拟合训练数据。可以尝试减少判别器的更新次数,以平衡生成器和判别器的训练过程。
    7. 可以尝试使用不同的判别器loss函数,如Wasserstein loss,来更好地训练判别器。这种loss函数可以更好地解决梯度消失和模式崩溃等问题。
    8. 可以尝试增加判别器的网络层数,以增加模型的复杂性和表示能力。

    此外,还有一些其他可能的解决方案可以尝试:

    • 可以使用更大的训练数据集,以提高模型的泛化能力。
    • 可以尝试使用不同的优化算法和学习率调度方法,以更好地优化模型。
    • 可以尝试使用正则化技术,如批归一化、dropout等,来减少模型的过拟合。

    最后,GAN模型的训练也是一个非常复杂的过程,很难找到一个通用的解决方案,因此建议根据具体情况进行不同的尝试和实验,以找到最佳的训练策略。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月28日
  • 赞助了问题酬金15元 8月26日
  • 创建了问题 8月25日

悬赏问题

  • ¥15 vue使用gojs,需求在link中的虚线上添加方向箭头
  • ¥15 CSS通配符清除内外边距为什么可以覆盖默认样式?
  • ¥15 SPSS分类模型实训题步骤
  • ¥15 求解决扩散模型代码问题
  • ¥15 工创大赛太阳能电动车项目零基础要学什么
  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
  • ¥15 pycharm输出和导师的一样,但是标红