本文主要是介绍基于Keras的DCGAN实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基于Keras的DCGAN实现
说明:所有图片均来自网络,如有侵权请私信我删
参考资料
- 基于Keras的DCGAN实现的外文博客:GAN by Example using Keras on Tensorflow Backend
- GitHub上关于GAN网络实现技巧文章:How to Train a GAN? Tips and tricks to make GANs work
- 提出DCGAN网络的科技论文:Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks
DCGAN简介
Wikipedia定义
生成对抗网络(Generative Adversarial Network,简称GAN)是非监督式学习的一种方法,通过让两个神经网络相互博弈的方式进行学习。
生成对抗网络由一个生成网络与一个判别网络组成。生成网络从潜在空间(latent space)中随机采样作为输入,其输出结果需要尽量模仿训练集中的真实样本。判别网络的输入则为真实样本或生成网络的输出,其目的是将生成网络的输出从真实样本中尽可能分辨出来。而生成网络则要尽可能地欺骗判别网络。两个网络相互对抗、不断调整参数,最终目的是使判别网络无法判断生成网络的输出结果是否真实。
通俗解释
这里使用警察和假币制造者的例子进行说明:判别网络就是警察,生成网络就是假币制造者。假币制造者通过随意购买的材料制造伪钞,然后交给警察判别真假,警察将真假货币特征告诉假币制造者,假币制造者改良制造工艺,如此一直循环下去,直到有一天,假币制造者将自己的伪钞给警察的时候,竟然骗过了警察的火眼金睛,达到了以假乱真的程度。
这就是对抗生成网络,Adversarial说明了该网络的方式是通过两个网络的对抗来完成任务的,Generative说明了该网络是用来生成一些不存在的东西的,比如图片,比如诗歌等等。
实现细节
实现代码GitHub地址:https://github.com/theonegis/keras-examples.git
首先,来看一张图,这张图就是GAN的原理图,也是我们实现的指导思想。
所以,代码的核心是实现两个网络,以及训练过程。
判别网络
判别网络的架构如下:我们的输入是一个 28×28×1 28 × 28 × 1 的一张图片,中间经过四个卷积层变成 4×4×512
这篇关于基于Keras的DCGAN实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!