GC书籍笔记
发布人:shili8
发布时间:2024-12-23 05:35
阅读次数:0
**GC (Generative Adversarial Networks)书籍笔记**
**前言**
本书是关于 Generative Adversarial Networks(GANs)的全面介绍。GANs 是一种深度学习模型,用于生成新样本,使其与真实数据集中的样本看起来非常相似。这种技术在图像、文本和其他类型的数据中都有应用。
**第一章:GANs 的基本概念**
###1.1 GANs 的定义GANs 由两个网络组成:生成器(Generator)和鉴别器(Discriminator)。生成器试图产生真实样本,而鉴别器则试图区分真实样本和生成的样本。
###1.2 GANs 的目标GANs 的目标是使生成器能够产生看起来非常相似的真实样本,使得鉴别器无法区分它们。通过这种方式,GANs 可以学习到数据分布,并且可以生成新样本。
**第二章:GANs 的架构**
###2.1生成器(Generator)
生成器是一个神经网络,它接收一个随机噪声作为输入,然后输出一个新的样本。生成器的目标是使得输出的样本看起来与真实数据集中的样本非常相似。
import torchimport torch.nn as nnclass Generator(nn.Module): def __init__(self, z_dim, img_shape): super(Generator, self).__init__() self.fc1 = nn.Linear(z_dim,128) self.relu1 = nn.ReLU() self.fc2 = nn.Linear(128,256) self.relu2 = nn.ReLU() self.fc3 = nn.Linear(256, *img_shape) def forward(self, z): x = self.relu1(self.fc1(z)) x = self.relu2(self.fc2(x)) img = torch.tanh(self.fc3(x)) return img
###2.2 鉴别器(Discriminator)
鉴别器是一个神经网络,它接收一个样本作为输入,然后输出一个概率值,表示该样本是真实的还是生成的。
import torchimport torch.nn as nnclass Discriminator(nn.Module): def __init__(self, img_shape): super(Discriminator, self).__init__() self.fc1 = nn.Linear(*img_shape,256) self.relu1 = nn.ReLU() self.fc2 = nn.Linear(256,128) self.relu2 = nn.ReLU() self.fc3 = nn.Linear(128,1) def forward(self, img): x = self.relu1(self.fc1(img)) x = self.relu2(self.fc2(x)) prob = torch.sigmoid(self.fc3(x)) return prob
**第三章:GANs 的训练**
###3.1 训练目标GANs 的训练目标是使得生成器能够产生看起来非常相似的真实样本,使得鉴别器无法区分它们。
import torchimport torch.optim as optim# 定义损失函数def loss_fn(G, D, real_img, fake_img): # 鉴别器的损失 d_loss = -torch.mean(D(real_img)) + torch.mean(D(fake_img)) #生成器的损失 g_loss = -torch.mean(D(fake_img)) return d_loss, g_loss# 定义优化器G_optimizer = optim.Adam(G.parameters(), lr=0.001) D_optimizer = optim.Adam(D.parameters(), lr=0.001) # 训练循环for epoch in range(100): for i, (real_img, _) in enumerate(dataloader): #生成假样本 fake_img = G(torch.randn(1, z_dim)) # 计算损失 d_loss, g_loss = loss_fn(G, D, real_img, fake_img) # 更新模型参数 D_optimizer.zero_grad() D_optimizer.step() G_optimizer.zero_grad() G_optimizer.step()
**结论**
本书是关于 Generative Adversarial Networks(GANs)的全面介绍。GANs 是一种深度学习模型,用于生成新样本,使其与真实数据集中的样本看起来非常相似。这种技术在图像、文本和其他类型的数据中都有应用。本书提供了 GANs 的基本概念、架构和训练方法,以及代码示例和注释。