GAN(Generative Adversarial Networks)是两个网络的的组合, 一个网络生成模拟数据, 另一个网络判断生成的数据是真实的还是模拟的。生成模拟数据的网络要不断优化自己让判别的网络判断不出来, 判别的网络也要优化自己让自己判断得更准确。 二者关系形成对抗博弈,因此叫对抗神经网络(生成对抗网络)。实验证明, 利用这种网络间的对抗关系所形成的网络, 在无监督及半监督领域取得了很好的效果, 可以算是用网络来监督网络的一个自学习过程。
通过训练两个相互对抗的神经网络解决了非监督学习问题,其中一个是生成(Generator)网络,另一个叫判别(discriminator)网络。
GAN可以借助假币伪造者(生成网络)和 警察(判别网络)的例子来理解。最初,伪造者向警察展示随机生成的假钞票,警察识别出钞票是假的,伪造者根据收到的反馈制造了新的假钞票。如此重复相当多次,直到伪造者可以造出警察无法识别、足以以假乱真的钞票。在GAN的场景中,最后得到了可以生成和真实图片非常相似的图片的生成网络,以及可以高度识别伪造品的判别网络。
GAN是伪造网络和专家网络的联合,每个网络都被训练来打败对方。生成网络以随机变量为输入并生成一张合成图片。判别网络拿到输入的图片,并判断图片是真实的还是伪造的。我们给判别网络要么传入一张真实图片,要么传入一张伪造图片。生成网络训练生成图片,欺骗判别网络,想让其相信图片是真实的。判别网络也会持续改进,基于得到的反馈反进行欺骗训练。
将库导入好,然后是定义参数
from keras import layers, datasets, Sequent