跳转至

实验:生成对抗网络(GAN)

开始之前

我们在本次实验中使用Jupyter Notebook进行实验,请参考Jupyter Notebook使用,按照文档中详细步骤进行操作,完成Jupyter Notebook的配置。

实验任务

本次实验分为三个任务:GAN(约60分钟)、DCGAN(约45分钟)、WGAN(约45分钟)。

任务一:GAN

下载任务一代码

在这个任务中,你将:

  1. 了解 GAN(Generative adversarial network) 的基本概念
  2. 学会 构建训练 GAN 模型,生成逼真的图像
  3. 了解GAN训练过程中可能遇到的问题及其解决方案
  4. 了解TensorBoard工具的基本用法

主要内容包括:

  • 数据准备
  • 构建 GAN 模型,包括生成器(Generator)与判别器(Discriminator)

  • 训练 GAN

  • 结果可视化

  • 使用TensorBoard记录训练过程中损失函数的变化趋势

通过本任务,你将学会用GAN(生成对抗网络)训练一个模型,使其能够输出手写数字图像

任务二:DCGAN

下载任务二代码

在这个任务中,你将:

  1. 了解 DCGAN(Deep Convolutional GAN) 的基本原理
  2. 掌握卷积、批归一化(BatchNorm)等在DCGAN中的应用
  3. 了解DCGAN训练过程中可能遇到的问题及其解决方案

主要内容包括:

  • 代码改进,包括卷积层替代全连接层使用 BatchNormLeakyReLU 代替 ReLUTanh 作为生成器输出激活函数
  • 训练DCGAN
  • 结果可视化
  • 使用TensorBoard记录训练过程中损失函数的变化趋势
  • 对比不同之处,分析其架构和改进点

通过本任务,你将学会在第一部分的基础上,用DCGAN(Deep Convolutional GAN)来实现相同的目标

任务三:WGAN

下载任务三代码

在这个任务中,你将:

  1. 了解 WGAN(Wasserstein GAN) 的基本原理
  2. 学习如何通过 Wasserstein 距离优化 GAN 模型的训练稳定性
  3. 了解WGAN训练过程中可能遇到的问题及其解决方案

主要内容包括:

  • 代码改进,通过最小化 Wasserstein 距离来度量生成数据与真实数据分布之间的差异
  • 训练WGAN
  • 结果可视化
  • 使用TensorBoard记录训练过程中损失函数的变化趋势
  • 对比不同之处,分析其架构和改进点

通过本任务,你将学会在第二部分的基础上,用 WGAN(Wasserstein GAN)来实现相同的目标

实验提交

实验完成后,请提交以下材料:

  1. 运行成功的Jupyter Notebook文件
  2. 一份PDF报告,报告内容包括但不限于
    1. 任务中的填充代码和相应实验结果
    2. 实验六思考题答案
    3. 实验心得与体会

提交说明

  1. 本次提交的内容为: 实验六要求提交的内容,具体要求请参见实验网站(https://zhiweinju.github.io/nju-dl-lab-2025spring/)
  2. 提交的报告文件请以PDF文件格式上传到selearning网站,上传文件的文件命名格式为: 学号_姓名_实验六.pdf,比如:123456789_张三_实验六.pdf
  3. 其他提交文件(如 运行成功的Jupyter Notebook文件),请加上前缀: 学号_姓名_,比如: 123456789_张三_lab6_GAN.ipynb
  4. 本次提交的截止时间为 4月11日23:59:59
  5. 对于迟交的处理: 迟交一周以内,折扣系数为0.8,迟交超过一周,折扣系数为0.6,超过一个月停止接收提交,尚未提交者本次作业计0分