#《PyTorch生成对抗网络编程》
2021-12-11
GAN架构训练:下面三步训练循环是实现这一目标的一种方法
- 第1步-向鉴别器展示一个真实的数据样本,告诉它该样本的分类应该是1.0。再用损失来更新鉴别器。
- 第2步-向鉴别器显示一个生成器的输出,告诉它该样本的分类应该是0.0。只用损失来更新鉴别器。不要更新生成器。
- 第3步-向鉴别器显示一个生成器输出,告诉生成器结果应该是1.0。只用结果的损失来更新生成器,希望生成器能够成功骗过鉴别器。
这就是大多数GAN训练方案的核心。
假设我们用一个被训练用于生成图像的神经网络……。我们称它为生成器(generator)。同时,我们把分类器称为鉴别器(discriminator)……
- 如果图像通过了鉴别器的检验,我们奖励生成器。
- 如果伪造的图像被识破,我们惩罚生成器
鉴别器和生成器是竞争对手关系,双方都试图超越对方,并在这个过程中逐步提高。我们称这种架构为生成对抗网络(Generative Adversarial Network,GAN)。
我们发现,由反向查询创建的图像具有以下的特征:
- 在独热向量相同的情况下,生成的图像总是相同的;
- 它们是有标签的训练数据的像素平均值。
能够用网络来生成图像已经很不错了,但理想的情况应该是;
- 网络可以生成不同的图像
- 生成的图像看起来像训练数据中的一个样本,而不是数据集的平滑平均值。