原始GAN训练流程与存在问题

本文深入探讨了原始GAN的训练流程,包括先训练Generator再训练Discriminator的原因,以及训练过程中遇到的问题,如重复模型、训练不稳定、噪音不真实等。通过分析,揭示了在达到最优判别器时,GAN模型可能无法达到最优解的原因,并引用WGAN的改进思路,阐述了训练过程中的困难及模型震荡的原理。
摘要由CSDN通过智能技术生成
1.简单的GAN训练流程
1训练流程
  • 创建标签,判别器Discriminator区分Real Image和Fake Image归根结底是一个二分类。这里不能用数据集自带标签。
valid = Tensor(image.size(0), 1).fill_(1.0).detach()  # Tensor(batch size row,1), fill 1.0 mark Real Image 
fake = Tensor(image.size(0), 1).fill_(0.0).detach()	# .detach() mean with no grad / requires_grad = False
  • 先训练Generator

第一步:先用Tensor生成符合任意分布的噪声数据z,z . shape = (Batch Size, input_Dim)例如程序中将噪声输入数据维度可设置为100。

第二步:生成数据G(z),并对G(z)添加标签,目的是为了愚弄判别器。

第三步:生成损失值,这里损失值来源于判别器D(G(z))

第四步:BP & 更新步骤

optimizer_G.zero_grad() # 对已有的gradient清零,因为有新来的Batch 
# 第一步
z = Tensor(np.random.normal(0, 1, (batch_size, input_Dim)))
# 第二步
gen_imgs = generator(z)
# 第三步
g_loss = adversarial_loss(discriminator(gen_imgs), valid)
# 第四步
g_loss.backward(
CycleGAN是一种用于图像转换的深度学习模型,它可以将一个领域的图像转换成另一个领域的图像,而无需配对的训练数据。下面是CycleGAN的整体流程: 1. 数据准备:收集两个领域的图像数据集,例如马和斑马的图像数据集。 2. 生成器网络:CycleGAN包含两个生成器网络,分别用于将一个领域的图像转换成另一个领域的图像。生成器网络通常由编码器和解码器组成,编码器将输入图像编码为潜在表示,解码器将潜在表示解码为输出图像。 3. 判别器网络:CycleGAN还包含两个判别器网络,分别用于判断生成的图像是否真实。判别器网络通常是卷积神经网络,它会对输入图像进行分类,输出一个概率值表示输入图像是真实图像的概率。 4. 对抗训练:CycleGAN使用对抗训练的方式进行训练。生成器网络的目标是生成逼真的图像,使得判别器无法区分生成的图像和真实图像。判别器网络的目标是准确地判断输入图像是真实图像还是生成图像。 5. 循环一致性损失:为了保持图像转换的一致性,CycleGAN引入了循环一致性损失。它通过将一个领域的图像转换成另一个领域的图像,再将转换后的图像转换回原始领域,使得转换前后的图像尽量保持一致。 6. 训练过程:在训练过程中,生成器和判别器交替进行训练。生成器通过最小化生成图像与真实图像之间的对抗损失和循环一致性损失来学习生成逼真的图像。判别器通过最大化判别生成图像和真实图像的能力来学习准确地判断图像的真实性。 7. 测试和应用:训练完成后,可以使用生成器网络将一个领域的图像转换成另一个领域的图像。这可以应用于各种图像转换任务,如风格迁移、季节转换等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值