本期课程到这里,博主就默认大家已经对BP、CNN、RNN等基本的神经网络属性以及训练过程都有相应的认知了,如果还未了解最基本的知识,可以翻看博主制作的深度学习的学习路线,按顺序阅读即可。

深度学习的学习路线:往期课程

Hello,又是一个分享的日子,博主将在本期推文给大家介绍生成对抗网络(Generative Adversarial Network)。生成对抗网络书写了一个以假乱真的剧本。近年来AI换脸等技术火爆全球,离不开这个网络的点滴贡献。生成对抗网络能够学习数据的分布规律,并创造出类似我们真实世界的物件如图像、文本等。从以假乱真的程度上看,它甚至可以被誉为深度学习中的艺术家。好了,闲言少叙,我们这就走进生成对抗网络(GAN)的世界。

GAN开山之作

提取码:kd4j

https://pan.baidu.com/s/1tUDyx8flQd20svuyDvh88w

本文内容概要:

  1. 对抗生成网络(GAN)原理

  2. 对抗生成网络(GAN)网络结构

  3. 对抗生成网络(GAN)训练过程

  4. 对抗生成网络(GAN)实例

生成对抗网络的思想

原理 

相信大家都会画画,不管画得好坏与否吧,但总归会对着图案勾上两笔,当我们临摹的次数越多,我们画的也就越像。最后,临摹到了极致,我们的画就和临摹的那副画一模一样了,以至于专家也无法分清到底哪幅画是赝品。好了,这个例子,我们将主人公换成生成对抗网络,画画这个操作换成训练,其实也是这么一回事。总体来说,就是这个网络学习数据分布的规律,然后弄出一个和原先数据分布规律的数据。这个数据可以是语音、文字和图像等等。

Gan的网络结构

Gan网络结构图

如上图,Gan网络结构拥有两个部分,一个是生成器(generator),另一个是辨别器(discriminator)。现在我们拿手写数字图片来举个例子。我们希望gan能临摹出和手写数字图片一样的图,达到以假乱真的程度。那么它整体的流程如下:

  1. 首先定义一个生成器(generator),输入一组随机噪声向量(最好符合常见的分布,一般的数据分布都呈现常见分布规律),输出为一个图片。

  2. 定义一个辨别器(discriminator),用它来判断图片是否为训练集中的图片,是为真,否为假。

  3. 当辨别器无法分辨真假,即判别概率为0.5时,停止训练。

其中,生成器和辨别器就是我们要组的神经网络,可以是CNN、RNN或者BP网络等,只要能完成任务即可。

具体的训练过程

  1. 初始化生成器G辨别器D两个网络的参数

  2. 从训练集抽取n个样本,以及生成器利用定义的噪声分布生成n个样本。固定生成器G,训练辨别器D,使其尽可能区分真假。

  3. 循环更新k次辨别器D之后,更新1次生成器G,使辨别器尽可能区分不了真假。

  4. 多次更新迭代后,理想状态下,最终辨别器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)相关推荐

  1. 图像对抗生成网络 GAN学习01:从头搭建最简单的GAN网络,利用神经网络生成手写体数字数据(tensorflow)

    图像对抗生成网络 GAN学习01:从头搭建最简单的GAN网络,利用神经网络生成手写体数字数据(tensorflow) 文章目录 图像对抗生成网络 GAN学习01:从头搭建最简单的GAN网络,利用神经网 ...

  2. 深度学习代码实战演示_Tensorflow_卷积神经网络CNN_循环神经网络RNN_长短时记忆网络LSTM_对抗生成网络GAN

    前言 经过大半年断断续续的学习和实践,终于将深度学习的基础知识看完了,虽然还有很多比较深入的内容没有涉及到,但也是感觉收获满满.因为是断断续续的学习做笔记写代码跑实验,所以笔记也零零散散的散落在每个角 ...

  3. 对抗生成网络GAN(优化目标篇)

    对抗生成网络GAN(优化目标篇) 快要面试,故对GAN进行稍许复习 目的 对抗式生成网络GAN提出的目的是估计样本的密度函数pr(x;θ)p_r(x;\theta)pr​(x;θ),且并不显式的估计密 ...

  4. 深度学习对抗生成网络--GAN

    导读:GAN的风暴席卷了整个深度学习圈子,任何任务似乎套上GAN的壳子,立马就变得高大上了起来.那么,GAN究竟是什么呢? 相关资料下载 加助教小姐姐的威信即可免费获取: 1. GAN的基本思想 GA ...

  5. pytorch学习笔记-----对抗生成网络GAN

    生成器,判别器 G:生成网络生成的都为假的 D:判别网络判别真实数据与来自生成网络的假数据 判别网络其实就是进行一个图像二分类 生成网络需要fc层输出个数为h*w*c(c=1or3 即为一张图片的形式 ...

  6. 李宏毅对抗生成网络 (GAN)教程(1)Introduction

    视频链接:https://www.bilibili.com/video/BV1tE411Z78A 在李宏毅GAN教程(1) 的基础上增添修改内容 文章目录 Basic idea of GAN 生成器G ...

  7. 一文通俗了解对抗生成网络(GAN)核心思想

    目前有时间的时候学习一下gan的知识,但是时间也不多,这里记录一下所学,不要太期待喔,完全是学习李宏毅老师课程的笔记,由于是新手,欢迎大家交流指错. 引言 GAN已经作为一种思想来渗透在ML的其余领域 ...

  8. Tensorflow 对抗生成网络GAN 不服就GAN

    这一节的回顾也意味着深度学习基础课程学习进入了尾声了,GAN作为性能远超我们上一节提到的VAE的一个存在还是有很多出彩的地方的: 首先引用理查德费曼的一句话-'What I cannot create ...

  9. 李宏毅对抗生成网络 (GAN)教程(2) Conditional Generation by GAN

    文章目录 Conditional GAN 介绍 具体算法 设计Discriminator Stack GAN 图片到图片 Patch GAN 应用在speech enhancement Video G ...

最新文章

  1. 国家部委对4G调研:未定给中电信联通发放牌照
  2. chrome vue插件_不容错过的 Chrome 插件推荐合集-开发者必备篇
  3. 富爸爸系列 -- 《财务自由》学习笔记之三
  4. Java多线程学习九:怎样确定线程数量及CPU 核心数和线程数的关系||如何定制自己的线程池
  5. 网站建设-学习笔记1-建站
  6. 划片机的性能决定了芯片产品的质量
  7. java 集合之HashMap 源码阅读记录
  8. 【Redis】Failed listening on port 6379 (TCP), aborting.
  9. 【leetcode.179】最大数
  10. vue项目首屏加载过慢解决方案
  11. 自定义view系列---刮刮乐的实现
  12. ami主板uefi_BIOS和UEFI 你真的认识?
  13. logi option闪退_什么是LogiOptions.exe(UNICODE),是进程安全吗? | MOS86
  14. PTA 古风排版 (20 分)队列方法
  15. 强网杯2021 ctf线上赛ezmath wp(#超详细,带逆向新手走过一个又一个小坑)
  16. 【c++】手写笔记扫描版
  17. 搭建一个基于flask和redis的代理池(proxy pool)
  18. CMMI 级别中和BUG率
  19. 视频字幕获取及处理方法(以中国大学MOOC视频为例 )
  20. 教你一招:多个视频如何实现列表播放?

热门文章

  1. 素质拓展之1到30看图猜数并排序
  2. 计算机常用英语词汇700词(一)
  3. Cesium结合Echarts的使用
  4. 104、前端5种安全问题及防范
  5. 彩色图像、灰度图像、二值图像和索引图像区别?
  6. php设计鸡兔同笼问题解法,数量关系解题技巧:三种方法巧解鸡兔同笼问题
  7. GCD学习之简单小结
  8. js监听div滚动条
  9. 计算机安全培训考试利弊,人机对话考试是什么意思 有哪些利弊
  10. Unity3D游戏开发实习生日志——自己就是一个啥都不知道的小小白