2020-08-27

GAN学习以及示例代码

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:Gan入门学习材料以及一些常用的pytorch的Gan实现代码


一、GAN是什么?

GAN–Generative Adversarial Nets,即生成对抗网络。2014 年,Ian Goodfellow 的论文-《Generative Adversarial Nets》论文网址https://arxiv.org/pdf/1406.2661v1.pdf。

GAN的思想是基于博弈理论,在博弈中有两个模型:generator–生成器(G)和discriminator–鉴别器(D).

  • G-生成器
    (1)生成器作用就是给定服从某种分布的随机数(如正态分布),模型就可以给你生产以假乱真的假数据,如图像和文字等。生成器要做的就是找到一种映射关系,将随机数的分布映射成特定数据的分布。
    (2)生成网络是造样本的,它的目的就是使得自己造样本的能力尽可能强,强到什么程度呢,你判别网络没法判断我是真样本还是假样本。生成器可以是一个神经网络模型,输入是一组随机数Z,输出是一个图像或文字,不再是一个数值而已。
  • D-鉴别器
    (1) 鉴别器就像一个真假鉴定专家,它能准确地将正假数据分开。一般来说鉴别器就是一个二分类器,对于输入数据是真数据时,输出为1,当初入数据为假数据时,输出为0.
    (2)直观来看判别器就是一个简单的神经网络结构,输入就是一副图像,输出就是一个概率值,用于判断真假使用(概率值大于0.5那就是真,小于0.5那就是假)。就是能判别出来属于的一张图它是来自真实样本集还是假样本集。假如输入的是真样本,网络输出就接近1,输入的是假样本,网络输出接近0,那么很完美,达到了很好判别的目的。

生成器和判别器通过反复地对抗,最终理想情况下, G 生成的数据与真实数据非常接近,分布也相同,而 D 无论输出真实数据还是 G 伪造的数据都输出0.5。这样我们的目的就达成了:我们得到了一个生成式的模型G,它可以用来生成图片或数据。

目前最重要的是要理解 GAN 差不多就是把两个网络放到一起工作的方法——生成器和判别器都有它们自己的架构。
需要注意的是生成模型与对抗模型可以说是完全独立的两个模型,好比就是完全独立的两个神经网络模型,他们之间没有什么联系。

二、GAN训练原理

1.目标函数

在这里插入图片描述

  • max 部分的含义是,D 要尽可能正确地识别出真实数据和 G 伪造的数据。
  • min 部分的含义是,G 要尽可能缩小自己生成的数据与真实数据的差别,让 D 真假难别。

GAN的训练原理如下:单独交替迭代训练。
在这里插入图片描述
在每一步的训练中:

取 m 个真实数据,使用 G 和 m 组随机数(一般使用服从正态分布的随机数)生成 m 个假数据
根据 max 部分的目标更新 D 的参数,提高 D 的分辨能力
根据 min 部分的目标更新 G 的参数,使 G 生成的数据更有迷惑性

代码如下(示例):
示例代码1
https://blog.csdn.net/jizhidexiaoming/article/details/96485095
示例代码2
https://www.pytorchtutorial.com/50-lines-of-codes-for-gan/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周扬2017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值