PaddlePaddle百度论文复现营——GAN入门学习笔记

PaddlePaddle百度论文复现营——GAN入门学习笔记

1 GAN 概述

什么是生成对抗网络?由谁提出?为什么要学习GAN?

1.1 GAN是什么?

GAN是“Generative Adversarial Networks”三个单词的首字母缩写,表示通过对抗的方式去学习数据分布的生成式模型。GAN的核心思想是通过生成网络G(Generator)和判别网络D(Discriminator)不断博弈,来达到生成类真数据的目的。

补充理解:
在这里插入图片描述

1.2 GAN作者

GAN最早是由Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio等人于2014提出,其源码可通过GitHub获取,地址是https://github.com/goodfeli/adversarial

1.3 学习GAN的原因

在这里插入图片描述
在这里插入图片描述

2 原理与改进

GAN的基本原理,GAN的训练方法,GAN的现有问题,GAN的改进方法

2.1 GAN的发展脉络

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 GAN的原理

在这里插入图片描述
Tip: G生成的是假数据,D用于区分G生成的假数据&输入的真数据。
在这里插入图片描述

  • 补充理解:
  1. 纳什均衡(Nash equilibrium)
    在这里插入图片描述
  2. 最大似然估计(maximum likelihood estimation, MLE)
    在这里插入图片描述
    Tip: 如对此概念仍有困惑,可参考https://zhuanlan.zhihu.com/p/26614750

2.3 GAN的目标函数

在这里插入图片描述

2.4 GAN的训练方法

考虑到G,D互相依赖,在训练时通常采取“锁定一个,训练另一个”的策略。通常先锁定G,更新D,待D网络训练一定轮次之后再锁定D,更新G。
在这里插入图片描述
在这里插入图片描述

2.5 GAN的训练细节

在这里插入图片描述

2.6 GAN的训练可视化

在这里插入图片描述

  • 虚线点为真实的数据分布,蓝色虚线是判别器,绿色实现为生成器
  • 由左至右可看到生成的分布越来越接近真实分布,而判别器的概率最后变为0.5

2.7 GAN的优点

在这里插入图片描述

2.8 GAN存在的问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.9 GAN常见的模型结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.10 模式坍塌的解决方案

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.11 Wasserstein GAN(WGAN)

在这里插入图片描述

2.12 WGAN解决的问题

在这里插入图片描述

2.13 Wasserstein距离

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3 应用场景

图像风格迁移,超分辨率图像生成,序列生成,文本风格迁移等场景

3.1 GAN的应用场景

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 超分辨率图像生成

在这里插入图片描述
在这里插入图片描述

3.3 图像转换

在这里插入图片描述
在这里插入图片描述

3.4 图像风格迁移

在这里插入图片描述
在这里插入图片描述

3.5 风格迁移面部生成器

在这里插入图片描述
在这里插入图片描述

3.6 鉴别图像真伪

在这里插入图片描述

3.7 序列生成

在这里插入图片描述

3.8 文本风格迁移

在这里插入图片描述

4 课程实践

手写数字生成案例

Step 1 数据准备

import paddle
import paddle.fluid as fluid
from paddle.fluid.dygraph import Conv2D, Pool2D, Linear
import numpy as np
import matplotlib.pyplot as plt

# 噪声维度
Z_DIM = 100 # 此处将要喂入生成器高斯分布的噪声隐变量z的维度设置为100。
BATCH_SIZE = 128
# 读取真实图片的数据集,这里去除了数据集中的label数据,因为label在这里使用不上,这里不考虑标签分类问题。
def mnist_reader(reader):
    def r():
        for img, label in reader():
            yield img.reshape(1, 28, 28)
    return r

# 噪声生成,通过由噪声来生成假的图片数据输入。
def z_reader():
    while True:
        yield np.random.normal(0.0, 1.0, (Z_DIM, 1, 1)).astype('float32')                #正态分布,正态分布的均值、标准差、参数

# 生成真实图片reader
mnist_generator = paddle.batch(paddle.reader.shuffle(mnist_reader(paddle.dataset.mnist.train()), 30000), batch_size=BATCH_SIZE)

# 生成假图片的reader
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值