SeV*_*eVe 6 machine-learning deep-learning keras generative-adversarial-network
我从Keras的 Paper Edge-Connect ( https://github.com/knazeri/edge-connect )实施了提议的 GAN 模型,并在 KITTI 数据集上进行了一些培训。现在我试图弄清楚我的模型内部发生了什么,因此我有几个问题。
1. 初始训练(100 Epochs,500 batches/epoch,10 Samples/Batch)
起初,我按照论文中的建议训练了模型(包括风格、感知、L1 和对抗性损失)
乍一看,该模型收敛到不错的结果:
这是屏蔽输入(右)的生成器(左)的输出
tensorboard 中的大部分图看起来也相当不错:(这些都是来自 GAN 模型的值,包含生成器的总损失(GENERATOR_Loss),基于生成的图像(L1,perc,style)的不同损失为以及对抗性损失(DISCRIMINATOR_loss)
当仔细观察鉴别器时,事情看起来就不一样了。生成图像的判别器的对抗性损失稳步增加。训练鉴别器时的损失(50/50 假/真例子)根本没有改变:
![] ( https://i.stack.imgur.com/o5jCA.png )
当查看鉴别器输出的激活直方图时,它总是输出大约 0.5 的值。
谈到我的问题/结论,我希望得到您的反馈:
2.于是我开始了第二次训练,这次只使用了生成器中的对抗性损失!(~16 个 Epoch,500 个批次/时期,10 个样本/批次)
这次鉴别器似乎能够在一段时间后区分真假。(prob_real 是分配给真实图像的平均概率,反之亦然)激活的直方图看起来也不错:
但是不知何故,在大约 4k 个样本之后,事情开始发生变化,并且在大约 7k 时它发散了……来自生成器的所有样本也如下所示:
来到我的问题/结论的第二部分:
小智 0
如果判别器在网络开始时直接输出 0.5 的概率,则意味着判别器的权重没有更新,并且在训练中不起作用,这进一步表明它无法区分来自生成器的真假图像。为了解决这个问题,尝试添加高斯噪声作为鉴别器的输入或进行标签平滑,这些都是非常简单而有效的技术。在回答你的这个问题时,结果都是基于除对抗性损失之外的损失,可以使用的技巧是尝试首先在除对抗性损失之外的所有损失上训练网络,然后对对抗性损失进行微调损失,希望有帮助。对于问题的第二部分,生成的图像似乎面临模式崩溃的问题,它们倾向于从 1 个图像学习颜色、退化并将其传递给其他图像,尝试通过减小批量大小来解决这个问题或使用展开的甘斯,
归档时间: |
|
查看次数: |
312 次 |
最近记录: |