课程代码: xxx
成 绩
评阅教师
Xxx
2023-2024(2)学年
《神经网络与深度学习》
DCGAN 和 WGAN 开发文档
题 目:
DCGAN 和 WGAN 开发文档
开课学院:
计算机科学与技术学院
姓 名:
Kevin
学 号:
Xxxxx
年级专业:
Xxxx
任课教师:
Xxx
日 期:
2024 年 4 月 21 日
目录
1 GAN ............................................................................................................................................. 3
1.1 GAN 概述 ......................................................................................................................... 3
1
.
2 GAN
算法流程
................................................................................................................. 3
2 DCGAN ....................................................................................................................................... 4
2.1 DCGAN
概述
.....................................................................................................................4
2.2 DCGAN 的改进 .................................................................................................................5
3
基于
MindSpore
的
DCGAN
训练
...........................................................................................5
3.1 数据准备与处理 ................................................................................................................5
3.2
生成器与判别器
................................................................................................................7
3.3 损失函数和优化器 ............................................................................................................8
3.4
训练模型
............................................................................................................................9
3.5 结果 ..................................................................................................................................11
4 WGAN ....................................................................................................................................... 12
4.1 WGAN 概述 .................................................................................................................... 12
4.2 WGAN
的改进
................................................................................................................ 12
5 基于 MindSpore 的 WGAN 训练 ...........................................................................................13
5.1
数据预处理
......................................................................................................................13
5.2 构建判别器和生成器 ......................................................................................................14
5.3
损失函数和权重裁切
......................................................................................................16
5.4 训练 ..................................................................................................................................18
5.5
测试结果
..........................................................................................................................21
6 思考 ...........................................................................................................................................23
6.1 DCGAN
与
WGAN
的不足
............................................................................................ 23
6.2 如何解决? ......................................................................................................................23
1 GAN
1
.
1 GAN
概述
GAN
(
Generative Adversial Network
)生成式对抗网络是一种深度学习模型,由生成器
(
Generator
)和对抗器(
Discriminator
)组成,通过对抗训练的方式来生成逼真的数据样
本。生成器的任务是从随机噪音中生成与真实数据尽可能相似的数据样本,而判别器的任
务是判断输入的数据样本是真实数据还是生成数据的概率。在训练过程中,生成器和判别
器相互竞争,不断优化自己的能力,最终使生成器能够生成足够逼真的样本数据。
GAN
已经在多个领域取得了显著的成果,比如图像生成、自然语言处理、视频生成等。
在图像生成领域,
GAN
可以生成高质量的图像样本,甚至可以生成逼真的人脸图像。在自
然语言处理领域,
GAN
可以用于文本生成、机器翻译等任务。在视频生成领域,
GAN
可
以生成逼真的视频序列。
然而,
GAN
仍然面临一些挑战。其中之一是不稳定性问题,即生成器和判别器的训练
过程可能会出现不稳定的情况,导致训练困难。另一个挑战是模式坍塌问题,即生成器可
能会生成相似的样本,导致缺乏多样性。为了解决这些问题,研究人员提出了各种改进的
GAN
模型,如
Wasserstein GAN
、
Conditional GAN
等。
1
.
2 GAN
算法流程
GAN
生成式对抗网络的算法流程包括生成器和判别器两部分,它们通过对抗训练的方
式相互竞争,不断优化自身的能力。以下是
GAN
算法的基本流程:
(
1
)初始化生成器和判别器的参数。
(
2
)生成器接收一个随机噪声向量作为输入,通过神经网络生成一个数据样本。
(
3
)判别器接收生成器生成的数据样本和真实数据样本,通过神经网络输出一个概率值,
表示该样本为真实数据的概率。
(
4
)计算判别器的损失函数,即判别器对真实数据的判断误差和对生成数据的判断误差
之和。
(
5
)生成器接收判别器的反馈,调整参数以减小判别器的判断误差,使生成的数据更接
近真实数据。
(
6
)计算生成器的损失函数,即判别器对生成数据的判断误差。
(
7
)判别器接收生成器生成的新数据样本和真实数据样本,重新计算判别器的损失函数。
(
8
)生成器和判别器交替训练,不断迭代优化参数,直到达到收敛条件或训练次数。
2 DCGAN
2.1 DCGAN
概述
DCGAN ( 深 度 卷 积 对 抗 生 成 网 络 , Deep Convolutional Generative Adversarial
Networks)是 GAN 的直接扩展。最早由 Radford 等人在论文《Unsupervised Representation
Learning With Deep Convolutional Generative Adversarial Networks》中进行描述。
判别器由分层的卷积层、BatchNorm 层和 LeakyReLU 激活层组成。输入是 3x64x64 的图像,
输出是该图像为真图像的概率。生成器则是由转置卷积层、BatchNorm 层和 ReLU 激活层组
成。输入是标准正态分布中提取出的隐向量 z,输出是 3x64x64 的 RGB 图像。
DCGAN 网络设计中采用了当时对 CNN 比较流行的改进方案:
(1)将空间池化层用卷积层替代,这种替代只需要将卷积的步长 stride 设置为大于 1 的
数值。改进的意义是下采样过程不再是固定的抛弃某些位置的像素值,而是可以让网络自
己去学习下采样方式。
(2)将全连接层去除,由于全连接层大幅增加了参数量,将全连接层去除,另外作者通
过实验发现了全局均值池化有助于模型的稳定性但是降低了模型的收敛速度;作者在论文
中指出通过将生成器输入的噪声 reshape 成四维张量,来使用卷积替代原有的全连接层。
(3)采用 BN 层,BN 的全称是 Batch Normalization,是一种用于常用于卷积层后面的归
一化方法,起到帮助网络的收敛等作用。另外原论文实验中发现对所有的层都使用 BN 会
造成采样的震荡和网络不稳定。
2.2 DCGAN
的改进
原论文中 DCGAN 的改进主要通过理论分析和实验验证,其对生成器的判别的修改如下:
(1)使用指定步长的卷积层代替池化层
(2)生成器和判别器中都使用 BN
(3)移除全连接层
(4)生成器除去输出层采用 Tanh 外,全部使用 ReLU 作为激活函数
(5)判别器所有层都使用 LeakyReLU 作为激活函数
3 基于 MindSpore 的 DCGAN 训练
3.1
数据准备与处理
数据集来自于
MindSpore
数据集库中的
Face
数据集。
(
1
)数据引入
1. from download import download
2.
3. url = "https://download.mindspore.cn/dataset/Faces/faces.zip"
4. path = download(url, "./datasets", kind="zip")
(
2
)数据处理