一、GAN原理
生成对抗网络简称GAN,是由两个网络组成的,一个生成器网络和一个判别器网络。这两个网络可以是神经网络(从卷积神经网络、循环神经网络到自编码器)。生成器从给定噪声中(一般是指均匀分布或者正态分布)产生合成数据,判别器分辨生成器的的输出和真实数据。前者试图产生更接近真实的数据,相应地,后者试图更完美地分辨真实数据与生成数据。由此,两个网络在对抗中进步,在进步后继续对抗,由生成式网络得的数据也就越来越完美,逼近真实数据,从而可以生成想要得到的数据(图片、序列、视频等)。网络结构如下:
GAN的公式:
更多理论知识请参考:生成对抗网络GAN详细推导。
需要注意的就是GAN模型中没有用到卷积,只是简单的多层神经网络。在网络中,也没有新的tensorflow函数,在经过了前边几篇学习笔记和理论知识学习之后,实现起来也比较容易实现。
二、项目实战
2.1 项目背景
基于MNIST数据集,利用GAN生成手写体数字。有关MNIST的简介,请参考:tensorflow学习笔记(四):利用BP手写体(MNIST)识别。