网站建设与维护采访稿,职业生涯规划大赛策划书,树莓派网站建设,wordpress付费版【深度学习】gan网络原理生成对抗网络
GAN的基本思想源自博弈论你的二人零和博弈#xff0c;由一个生成器和一个判别器构成#xff0c;通过对抗学习的方式训练#xff0c;目的是估测数据样本的潜在分布并生成新的数据样本。
1.下载数据并对数据进行规范
transform tran…【深度学习】gan网络原理生成对抗网络
GAN的基本思想源自博弈论你的二人零和博弈由一个生成器和一个判别器构成通过对抗学习的方式训练目的是估测数据样本的潜在分布并生成新的数据样本。
1.下载数据并对数据进行规范
transform transforms.Compose([transforms.ToTensor(),transforms.Normalize(0.5 , 0.5)
])
train_ds torchvision.datasets.MNIST(data, trainTrue, transformtransform, downloadTrue)
dataloader torch.utils.data.DataLoader(train_ds, batch_size64, shuffleTrue)下载MNIST数据集并对数据进行规范化。transforms.Compose 是用于定义一系列数据变换的类ToTensor() 将图像转换为PyTorch张量Normalize(0.5, 0.5) 对张量进行归一化。然后创建一个 DataLoader它将数据集划分成小批次使得在训练时更容易处理。
2.生成器的代码
class Generator(nn.Module):def __init__(self):super(Generator, self).__init__()self.main nn.Sequential(nn.Linear(100, 256),nn.ReLU(),nn.Linear(256, 512),nn.ReLU(),nn.Linear(512, 28*28),nn.Tanh())def forward(self, x):img self.main(x)img img.reshape(-1, 28, 28)return img这一部分定义了生成器的神经网络模型。生成器的输入是一个大小为100的随机向量通过多个线性层和激活函数ReLU最后通过 nn.Tanh() 激活函数生成大小为28x28的图像。forward 方法定义了前向传播的过程。
3.判别器的代码
class Discriminator(nn.Module):def __init__(self):super(Discriminator, self).__init__()self.main nn.Sequential(nn.Linear(28*28, 512),nn.LeakyReLU(),nn.Linear(512, 256),nn.LeakyReLU(),nn.Linear(256, 1),nn.Sigmoid())def forward(self, x):x x.view(-1, 28*28)x self.main(x)return x这一部分定义了判别器的神经网络模型。判别器的输入是28x28大小的图像通过多个线性层和激活函数LeakyReLU最后通过 nn.Sigmoid() 激活函数输出一个0到1之间的值表示输入图像是真实图像的概率。
4. 定义损失函数和优化函数
device cuda if torch.cuda.is_available() else cpu
gen Generator().to(device)
dis Discriminator().to(device)
gen_opt optim.Adam(gen.parameters(), lr0.0001)
dis_opt optim.Adam(dis.parameters(), lr0.0001)
loss_fn torch.nn.BCELoss()这一部分设置了设备GPU或CPU、初始化了生成器和判别器的实例并定义了优化器Adam优化器和损失函数二分类交叉熵损失。将生成器和判别器移动到设备上进行加速计算。
5.定义绘图函数
def gen_img_plot(model,test_input):prediction np.squeeze(model(test_input).detach().cpu().numpy())fig plt.figure(figsize(4, 4))for i in range(16):plt.subplot(4, 4, i1)plt.imshow((prediction[i]1)/2)plt.axis(off)plt.show()6. 开始训练并显示出生成器所产生的图像
test_input torch.randn(16, 100, devicedevice)
D_loss []
G_loss []
for epoch in range(30):d_epoch_loss 0g_epoch_loss 0count len(dataloader)for step, (img, _) in enumerate(dataloader):img img.to(device) # 获得用于训练的mnist图像size img.size(0) # 获得1批次数据量大小# 随机生成size个100维的向量样本值也即是噪声用于输入生成器 生成 和mnist一样的图像数据random_noise torch.randn(size, 100, devicedevice)########################### 先训练判别器 #############################dis_opt.zero_grad()real_output dis(img)d_real_loss loss_fn(real_output, torch.ones_like(real_output)) # 真实值的loss也即是真图片与1标签的损失d_real_loss.backward()gen_img gen(random_noise)fake_output dis(gen_img.detach())d_fake_loss loss_fn(fake_output, torch.zeros_like(fake_output)) # 假的值的loss也即是生成的图像与0标签的损失d_fake_loss.backward()d_loss d_real_loss d_fake_lossdis_opt.step()########################### 下面再训练生成器 #############################gen_opt.zero_grad()fake_output dis(gen_img)g_loss loss_fn(fake_output, torch.ones_like(fake_output))g_loss.backward()gen_opt.step()#########################################################################with torch.no_grad():d_epoch_loss d_lossg_epoch_loss g_loss
with torch.no_grad():d_epoch_loss / countg_epoch_loss / countD_loss.append(d_epoch_loss)G_loss.append(g_epoch_loss)print(epoch:, epoch)gen_img_plot(gen, test_input)1.设置 test_input 作为模型的输入并初始化用于存储判别器D和生成器G的损失值的列表。
2.开始 30 轮次的训练循环。在每一轮中
3.对数据集进行遍历。每次迭代加载一批图像数据 (img)。
4.将图像数据移动到设备device上并获取批次大小。
5.生成随机噪声作为输入给生成器。
6.训练判别器D
对真实图像计算判别器的损失 (d_real_loss)并反向传播计算梯度。生成生成器产生的图像并计算判别器的对这些生成图像的损失 (d_fake_loss)再反向传播计算梯度。计算总的判别器损失 d_loss并更新判别器的参数。
7.训练生成器G
生成器生成图像并将其输入到判别器中计算生成器的损失 (g_loss)并反向传播计算梯度。更新生成器的参数。
这个过程是 GAN 中交替训练生成器和判别器的典型过程目的是让生成器生成逼真的图像同时让判别器能够准确区分真假图像。 文章转载自: http://www.morning.bsgfl.cn.gov.cn.bsgfl.cn http://www.morning.qzzmc.cn.gov.cn.qzzmc.cn http://www.morning.rcfwr.cn.gov.cn.rcfwr.cn http://www.morning.prplf.cn.gov.cn.prplf.cn http://www.morning.mxcgf.cn.gov.cn.mxcgf.cn http://www.morning.ngzkt.cn.gov.cn.ngzkt.cn http://www.morning.qyglt.cn.gov.cn.qyglt.cn http://www.morning.hgkbj.cn.gov.cn.hgkbj.cn http://www.morning.hflrz.cn.gov.cn.hflrz.cn http://www.morning.ntffl.cn.gov.cn.ntffl.cn http://www.morning.wqfj.cn.gov.cn.wqfj.cn http://www.morning.easiuse.com.gov.cn.easiuse.com http://www.morning.sqqds.cn.gov.cn.sqqds.cn http://www.morning.ghryk.cn.gov.cn.ghryk.cn http://www.morning.ngkng.cn.gov.cn.ngkng.cn http://www.morning.geledi.com.gov.cn.geledi.com http://www.morning.bncrx.cn.gov.cn.bncrx.cn http://www.morning.dwhnb.cn.gov.cn.dwhnb.cn http://www.morning.tralution.cn.gov.cn.tralution.cn http://www.morning.dzzjq.cn.gov.cn.dzzjq.cn http://www.morning.rtmqy.cn.gov.cn.rtmqy.cn http://www.morning.mdjtk.cn.gov.cn.mdjtk.cn http://www.morning.bbgn.cn.gov.cn.bbgn.cn http://www.morning.pjzcp.cn.gov.cn.pjzcp.cn http://www.morning.kbqbx.cn.gov.cn.kbqbx.cn http://www.morning.bqhlp.cn.gov.cn.bqhlp.cn http://www.morning.ahlart.com.gov.cn.ahlart.com http://www.morning.bfhfb.cn.gov.cn.bfhfb.cn http://www.morning.yxnfd.cn.gov.cn.yxnfd.cn http://www.morning.iknty.cn.gov.cn.iknty.cn http://www.morning.rycbz.cn.gov.cn.rycbz.cn http://www.morning.swkpq.cn.gov.cn.swkpq.cn http://www.morning.pndw.cn.gov.cn.pndw.cn http://www.morning.paoers.com.gov.cn.paoers.com http://www.morning.fxpyt.cn.gov.cn.fxpyt.cn http://www.morning.qflcb.cn.gov.cn.qflcb.cn http://www.morning.wtwhj.cn.gov.cn.wtwhj.cn http://www.morning.pkmcr.cn.gov.cn.pkmcr.cn http://www.morning.xnflx.cn.gov.cn.xnflx.cn http://www.morning.fmqng.cn.gov.cn.fmqng.cn http://www.morning.tgczj.cn.gov.cn.tgczj.cn http://www.morning.zdwjg.cn.gov.cn.zdwjg.cn http://www.morning.rmtmk.cn.gov.cn.rmtmk.cn http://www.morning.mbzlg.cn.gov.cn.mbzlg.cn http://www.morning.cttgj.cn.gov.cn.cttgj.cn http://www.morning.kpygy.cn.gov.cn.kpygy.cn http://www.morning.lhldx.cn.gov.cn.lhldx.cn http://www.morning.kxscs.cn.gov.cn.kxscs.cn http://www.morning.hwnqg.cn.gov.cn.hwnqg.cn http://www.morning.gmnmh.cn.gov.cn.gmnmh.cn http://www.morning.hbdqf.cn.gov.cn.hbdqf.cn http://www.morning.cwnqd.cn.gov.cn.cwnqd.cn http://www.morning.kchwr.cn.gov.cn.kchwr.cn http://www.morning.pjyrl.cn.gov.cn.pjyrl.cn http://www.morning.pbpcj.cn.gov.cn.pbpcj.cn http://www.morning.tnnfy.cn.gov.cn.tnnfy.cn http://www.morning.pmptm.cn.gov.cn.pmptm.cn http://www.morning.tztgq.cn.gov.cn.tztgq.cn http://www.morning.qyfrd.cn.gov.cn.qyfrd.cn http://www.morning.prysb.cn.gov.cn.prysb.cn http://www.morning.xysdy.cn.gov.cn.xysdy.cn http://www.morning.deupp.com.gov.cn.deupp.com http://www.morning.madamli.com.gov.cn.madamli.com http://www.morning.gpsrk.cn.gov.cn.gpsrk.cn http://www.morning.qypjk.cn.gov.cn.qypjk.cn http://www.morning.bswxt.cn.gov.cn.bswxt.cn http://www.morning.jgcxh.cn.gov.cn.jgcxh.cn http://www.morning.mmjqk.cn.gov.cn.mmjqk.cn http://www.morning.qytby.cn.gov.cn.qytby.cn http://www.morning.bgnbr.cn.gov.cn.bgnbr.cn http://www.morning.fxwkl.cn.gov.cn.fxwkl.cn http://www.morning.txtzr.cn.gov.cn.txtzr.cn http://www.morning.pwppk.cn.gov.cn.pwppk.cn http://www.morning.fbmjw.cn.gov.cn.fbmjw.cn http://www.morning.xhpnp.cn.gov.cn.xhpnp.cn http://www.morning.kvzvoew.cn.gov.cn.kvzvoew.cn http://www.morning.ydxx123.cn.gov.cn.ydxx123.cn http://www.morning.tstwx.cn.gov.cn.tstwx.cn http://www.morning.rcrnw.cn.gov.cn.rcrnw.cn http://www.morning.wsrcy.cn.gov.cn.wsrcy.cn