以假乱真的对抗生成网络(GAN)
本期课程到这里,博主就默认大家已经对BP、CNN、RNN等基本的神经网络属性以及训练过程都有相应的认知了,如果还未了解最基本的知识,可以翻看博主制作的深度学习的学习路线,按顺序阅读即可。
深度学习的学习路线:往期课程
Hello,又是一个分享的日子,博主将在本期推文给大家介绍生成对抗网络(Generative Adversarial Network)。生成对抗网络书写了一个以假乱真的剧本。近年来AI换脸等技术火爆全球,离不开这个网络的点滴贡献。生成对抗网络能够学习数据的分布规律,并创造出类似我们真实世界的物件如图像、文本等。从以假乱真的程度上看,它甚至可以被誉为深度学习中的艺术家。好了,闲言少叙,我们这就走进生成对抗网络(GAN)的世界。
GAN开山之作
提取码:kd4j
https://pan.baidu.com/s/1tUDyx8flQd20svuyDvh88w
本文内容概要:
对抗生成网络(GAN)原理
对抗生成网络(GAN)网络结构
对抗生成网络(GAN)训练过程
对抗生成网络(GAN)实例
生成对抗网络的思想
原理
相信大家都会画画,不管画得好坏与否吧,但总归会对着图案勾上两笔,当我们临摹的次数越多,我们画的也就越像。最后,临摹到了极致,我们的画就和临摹的那副画一模一样了,以至于专家也无法分清到底哪幅画是赝品。好了,这个例子,我们将主人公换成生成对抗网络,画画这个操作换成训练,其实也是这么一回事。总体来说,就是这个网络学习数据分布的规律,然后弄出一个和原先数据分布规律的数据。这个数据可以是语音、文字和图像等等。
Gan的网络结构
Gan网络结构图
如上图,Gan网络结构拥有两个部分,一个是生成器(generator),另一个是辨别器(discriminator)。现在我们拿手写数字图片来举个例子。我们希望gan能临摹出和手写数字图片一样的图,达到以假乱真的程度。那么它整体的流程如下:
首先定义一个生成器(generator),输入一组随机噪声向量(最好符合常见的分布,一般的数据分布都呈现常见分布规律),输出为一个图片。
定义一个辨别器(discriminator),用它来判断图片是否为训练集中的图片,是为真,否为假。
当辨别器无法分辨真假,即判别概率为0.5时,停止训练。
其中,生成器和辨别器就是我们要组的神经网络,可以是CNN、RNN或者BP网络等,只要能完成任务即可。
具体的训练过程
初始化生成器G和辨别器D两个网络的参数
从训练集抽取n个样本,以及生成器利用定义的噪声分布生成n个样本。固定生成器G,训练辨别器D,使其尽可能区分真假。
循环更新k次辨别器D之后,更新1次生成器G,使辨别器尽可能区分不了真假。
多次更新迭代后,理想状态下,最终辨别器D无法区分图片到底是来自真实的训练样本集合,还是来自生成器G生成的样本即可,此时辨别的概率为0.5,完成训练。
论文伪代码
实验
实验环境
Anaconda Python 3.7
Jupyter Notebook
Keras
开发环境安装在之前的推文中已经介绍,还没安装的小伙伴可以翻一下。
Python开发环境---Windows与服务器篇
Python深度学习开发环境---Keras
代码
Git链接
代码
https://github.com/ChileWang0228/DeepLearningTutorial/blob/master/GAN/GAN.ipynb
训练结果
辨别器与生成器的loss趋势图
生成器产生的手写数字体
小伙伴们可以试着调下面这几个参数,让结果更加的好看~
1.batch size
2.adam优化器的learning rate
3.迭代次数nb_epoch
4.生成器generat和辨别器discriminator的网络结构
视频版
视频版包含了代码讲解部分,不过博主的代码都做了相应的注释,相信大家都能看懂,喜欢视频版的小伙伴可以去观看~~~
bilibili值得拥有~(っ•̀ω•́)っ✎⁾⁾ 我爱学习
https://space.bilibili.com/299585150
总结
好了,到这里,我们就已经将对抗生成网络(GAN)的知识点讲完了。大家在掌握了整个流程之后,就可以在博主的代码上修修补补,训练自己的GAN模型了。
最后,博主在本期推文介绍的GAN只是2014年的开山之作,后面有很多人基于GAN提出了许多有趣的实验,这里就不一一赘述了。而且GAN的应用范围非常广阔,比如市面上很火的“换脸”软件,大多都是基于GAN的原理去做的。甚至我们也可以利用GAN去做数据增强,比如在我们缺少训练集的时候,可以考虑用GAN去生成一些数据,扩充我们的训练样本。
如果本期推文有用,那就点个赞吧,你们的点赞是博主持续更新的动力,感谢每一位小伙伴的关注~
以假乱真的对抗生成网络(GAN)相关推荐
- 图像对抗生成网络 GAN学习01:从头搭建最简单的GAN网络,利用神经网络生成手写体数字数据(tensorflow)
图像对抗生成网络 GAN学习01:从头搭建最简单的GAN网络,利用神经网络生成手写体数字数据(tensorflow) 文章目录 图像对抗生成网络 GAN学习01:从头搭建最简单的GAN网络,利用神经网 ...
- 深度学习代码实战演示_Tensorflow_卷积神经网络CNN_循环神经网络RNN_长短时记忆网络LSTM_对抗生成网络GAN
前言 经过大半年断断续续的学习和实践,终于将深度学习的基础知识看完了,虽然还有很多比较深入的内容没有涉及到,但也是感觉收获满满.因为是断断续续的学习做笔记写代码跑实验,所以笔记也零零散散的散落在每个角 ...
- 对抗生成网络GAN(优化目标篇)
对抗生成网络GAN(优化目标篇) 快要面试,故对GAN进行稍许复习 目的 对抗式生成网络GAN提出的目的是估计样本的密度函数pr(x;θ)p_r(x;\theta)pr(x;θ),且并不显式的估计密 ...
- 深度学习对抗生成网络--GAN
导读:GAN的风暴席卷了整个深度学习圈子,任何任务似乎套上GAN的壳子,立马就变得高大上了起来.那么,GAN究竟是什么呢? 相关资料下载 加助教小姐姐的威信即可免费获取: 1. GAN的基本思想 GA ...
- pytorch学习笔记-----对抗生成网络GAN
生成器,判别器 G:生成网络生成的都为假的 D:判别网络判别真实数据与来自生成网络的假数据 判别网络其实就是进行一个图像二分类 生成网络需要fc层输出个数为h*w*c(c=1or3 即为一张图片的形式 ...
- 李宏毅对抗生成网络 (GAN)教程(1)Introduction
视频链接:https://www.bilibili.com/video/BV1tE411Z78A 在李宏毅GAN教程(1) 的基础上增添修改内容 文章目录 Basic idea of GAN 生成器G ...
- 一文通俗了解对抗生成网络(GAN)核心思想
目前有时间的时候学习一下gan的知识,但是时间也不多,这里记录一下所学,不要太期待喔,完全是学习李宏毅老师课程的笔记,由于是新手,欢迎大家交流指错. 引言 GAN已经作为一种思想来渗透在ML的其余领域 ...
- Tensorflow 对抗生成网络GAN 不服就GAN
这一节的回顾也意味着深度学习基础课程学习进入了尾声了,GAN作为性能远超我们上一节提到的VAE的一个存在还是有很多出彩的地方的: 首先引用理查德费曼的一句话-'What I cannot create ...
- 李宏毅对抗生成网络 (GAN)教程(2) Conditional Generation by GAN
文章目录 Conditional GAN 介绍 具体算法 设计Discriminator Stack GAN 图片到图片 Patch GAN 应用在speech enhancement Video G ...
最新文章
- 国家部委对4G调研:未定给中电信联通发放牌照
- chrome vue插件_不容错过的 Chrome 插件推荐合集-开发者必备篇
- 富爸爸系列 -- 《财务自由》学习笔记之三
- Java多线程学习九:怎样确定线程数量及CPU 核心数和线程数的关系||如何定制自己的线程池
- 网站建设-学习笔记1-建站
- 划片机的性能决定了芯片产品的质量
- java 集合之HashMap 源码阅读记录
- 【Redis】Failed listening on port 6379 (TCP), aborting.
- 【leetcode.179】最大数
- vue项目首屏加载过慢解决方案
- 自定义view系列---刮刮乐的实现
- ami主板uefi_BIOS和UEFI 你真的认识?
- logi option闪退_什么是LogiOptions.exe(UNICODE),是进程安全吗? | MOS86
- PTA 古风排版 (20 分)队列方法
- 强网杯2021 ctf线上赛ezmath wp(#超详细,带逆向新手走过一个又一个小坑)
- 【c++】手写笔记扫描版
- 搭建一个基于flask和redis的代理池(proxy pool)
- CMMI 级别中和BUG率
- 视频字幕获取及处理方法(以中国大学MOOC视频为例 )
- 教你一招:多个视频如何实现列表播放?