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

本文深入探讨了原始GAN的训练流程,包括先训练Generator再训练Discriminator的原因,以及训练过程中遇到的问题,如重复模型、训练不稳定、噪音不真实等。通过分析,揭示了在达到最优判别器时,GAN模型可能无法达到最优解的原因,并引用WGAN的改进思路,阐述了训练过程中的困难及模型震荡的原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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(
要使用PyTorch GAN训练自己的数据集,你需要进行以下步骤: 1. 准备数据集:首先,你需要准备你自己的数据集。确保你的数据集符合PyTorch的要求,每个样本都是一个Tensor类型的图像,并且尺寸一致。 2. 创建数据加载器:使用PyTorch的DataLoader类创建一个数据加载器,可以帮助你在训练过程中有效地加载和处理数据。你可以指定批量大小、数据的随机顺序等参数。 3. 定义生成器和判别器模型:根据你的数据集,定义生成器和判别器的模型。生成器模型将一个随机噪声向量作为输入,并生成一个数据集相似的图像。判别器模型将图像作为输入,并输出一个值,表示该图像是真实图像还是生成图像。 4. 定义损失函数和优化器:为生成器和判别器定义适当的损失函数,通常是二分类交叉熵损失。然后,为每个模型创建一个优化器,例如Adam优化器。 5. 训练GAN模型:使用循环迭代的方式,在每个epoch中遍历数据集的所有mini-batches,并根据GAN训练的过程进行以下步骤:先训练生成器,传递真实图像和生成的假图像给判别器,并计算生成器的损失。然后,训练判别器,计算判别器对真实图像和生成的假图像的损失,并更新判别器的参数。重复这个过程,直到完成所有的epochs。 6. 生成新图像:训练完成后,你可以使用生成器模型生成新的图像。只需要提供一个随机噪声向量作为输入,通过生成器模型生成对应的图像。 请注意,这只是一个大致的概述,具体的实现细节会根据你的数据集和GAN模型的架构而有所不同。你需要根据你的需求进行相应的调整和优化。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [GAN简单介绍—使用PyTorch框架搭建GAN对MNIST数据集进行训练](https://blog.youkuaiyun.com/qq_36693723/article/details/130332573)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值