实验:生成对抗网络(GAN)¶
开始之前¶
我们在本次实验中使用Jupyter Notebook进行实验,请参考Jupyter Notebook使用,按照文档中详细步骤进行操作,完成Jupyter Notebook的配置。
实验任务¶
本次实验分为三个任务:GAN(约60分钟)、DCGAN(约45分钟)、WGAN(约45分钟)。
任务一:GAN¶
在这个任务中,你将:
- 了解 GAN(Generative adversarial network) 的基本概念
- 学会 构建 并 训练 GAN 模型,生成逼真的图像
- 了解GAN训练过程中可能遇到的问题及其解决方案
- 了解TensorBoard工具的基本用法
主要内容包括:
- 数据准备
-
构建 GAN 模型,包括生成器(Generator)与判别器(Discriminator)
-
训练 GAN
-
结果可视化
-
使用TensorBoard记录训练过程中损失函数的变化趋势
通过本任务,你将学会用GAN(生成对抗网络)训练一个模型,使其能够输出手写数字图像
任务二:DCGAN¶
在这个任务中,你将:
- 了解 DCGAN(Deep Convolutional GAN) 的基本原理
- 掌握卷积、批归一化(BatchNorm)等在DCGAN中的应用
- 了解DCGAN训练过程中可能遇到的问题及其解决方案
主要内容包括:
- 代码改进,包括卷积层替代全连接层、使用 BatchNorm、LeakyReLU 代替 ReLU、Tanh 作为生成器输出激活函数
- 训练DCGAN
- 结果可视化
- 使用TensorBoard记录训练过程中损失函数的变化趋势
- 对比不同之处,分析其架构和改进点
通过本任务,你将学会在第一部分的基础上,用DCGAN(Deep Convolutional GAN)来实现相同的目标
任务三:WGAN¶
在这个任务中,你将:
- 了解 WGAN(Wasserstein GAN) 的基本原理
- 学习如何通过 Wasserstein 距离优化 GAN 模型的训练稳定性
- 了解WGAN训练过程中可能遇到的问题及其解决方案
主要内容包括:
- 代码改进,通过最小化 Wasserstein 距离来度量生成数据与真实数据分布之间的差异
- 训练WGAN
- 结果可视化
- 使用TensorBoard记录训练过程中损失函数的变化趋势
- 对比不同之处,分析其架构和改进点
通过本任务,你将学会在第二部分的基础上,用 WGAN(Wasserstein GAN)来实现相同的目标
实验提交¶
实验完成后,请提交以下材料:
- 运行成功的Jupyter Notebook文件
- 一份PDF报告,报告内容包括但不限于:
- 任务中的填充代码和相应实验结果
- 实验六思考题答案
- 实验心得与体会
提交说明¶
- 本次提交的内容为: 实验六要求提交的内容,具体要求请参见实验网站(https://zhiweinju.github.io/nju-dl-lab-2025spring/)
- 提交的报告文件请以PDF文件格式上传到selearning网站,上传文件的文件命名格式为: 学号_姓名_实验六.pdf,比如:123456789_张三_实验六.pdf
- 其他提交文件(如 运行成功的Jupyter Notebook文件),请加上前缀: 学号_姓名_,比如: 123456789_张三_lab6_GAN.ipynb
- 本次提交的截止时间为 4月11日23:59:59
- 对于迟交的处理: 迟交一周以内,折扣系数为0.8,迟交超过一周,折扣系数为0.6,超过一个月停止接收提交,尚未提交者本次作业计0分