C GAN17 Mar 2025 | 6 分钟阅读 条件生成对抗网络(cGAN)是常规 GAN 的一种扩展,它在训练阶段加入了条件信息。传统 GAN 中的生成器生成数据样本时,无法控制生成输出的确切属性。而 cGAN 则能够根据额外信息(如类别标签或其他辅助数据)来生成样本。 为了更好地理解,可以把它们想象成不仅能创作出杰出艺术品,还能接受特定需求的艺术家。在传统的生成对抗网络(GAN)中,艺术家随机创作艺术,不知道要画哪种类型的图片。然而,cGAN 就像是聪明的画家,可以根据特定的需求或事实来生成图像。 C-GAN 的应用
下面是一个简单 cGAN 架构的概述 ![]() 如你所见,它相当直接。在创建图像时,我们使用噪声 z 与条件 c 的拼接。当我们使用判别器时,我们将生成的图像与我们用来生成它的 c 进行拼接。如果我们展示的是一个真实世界的例子,我们也会包含条件 c。 现在,我们将为 MNIST 创建一个简单的 cGAN,用于图像转换。 导入库加载数据集输出 ![]() 这是:2 C GAN众所周知,GAN 很难训练。由于我们使用了两个神经网络,我们需要确保它们是平衡的。这是问题之一。另一个问题是模式坍塌(mode collapse),即生成器无法产生足够多样的图像。这可能会变得很麻烦,所以我们尝试采用一些技巧来保持 GAN 的平衡。
此外,我们将添加一组更复杂的变量,在训练期间返回。我们不仅要返回 G 和 D 的损失,还要返回 D 的方差。我们希望判别器损失的波动尽可能小,所以我们会对此进行监控。 生成器网络该生成器旨在通过生成随机噪声 (z) 和特定信息 (c) 的条件来产生逼真的视觉效果。最后一层的 Tanh 激活函数确保输出图像值在 [-1, 1] 范围内。 判别器网络该判别器旨在确定输入的图像及附带的条件信息是真实的还是由 cGAN 生成器创建的。最后的 Sigmoid 激活函数会生成一个关于输入真实性的概率分数。 网络初始化这种初始化方案通常在 GAN 中使用,以帮助稳定训练。生成器和判别器都配备了适当的权重初始化,以增强学习过程并提高 cGAN 的整体性能。 与 Keras 不同,我们必须手动将网络移动到 GPU 上。这不是 Pytorch 自动执行的操作。这是因为它允许你构建一个复杂的多线程数据馈送器……等等。关键是 Pytorch 提供了比 Keras 更大的灵活性。它的速度也快了大约两倍,并且使用的内存要少得多。 在这里,我们将创建一个损失函数和优化器。 继续创建我们的优化器,我们将创建两个优化函数。 训练现在,我们将看到 cGAN 模型在训练时的工作情况。 模型将在一个循环中进行训练并处理图像。 输出 ![]() ![]() ![]() 下一个主题使用机器学习进行人类活动识别 |
我们请求您订阅我们的新闻通讯以获取最新更新。