[深度学习]半监督学习、无监督学习之DCGAN深度卷积生成对抗网络(附代码)

论文全称:《Generative Adversarial Nets》

论文地址:https://arxiv.org/pdf/1406.2661.pdf

论文全称:《UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS》

论文地址:https://arxiv.org/pdf/1511.06434.pdf

论文代码:

pytorch MNIST :https://colab.research.google.com/github/smartgeometry-ucl/dl4g/blob/master/gan.ipynb

pytorch Celeb-A Faces datasethttps://pytorch.org/tutorials/beginner/dcgan_faces_tutorial.html

TensorFlow Celeb-A Faces datasethttps://github.com/carpedm20/DCGAN-tensorflow

目录

GAN的原理

DCGANs原理

DCGANs in pytorch with MNIST


首先这里有两篇论文,第一篇是2014年Lan Goodfellow首次提出的GAN的框架,这个时候还只是用多层感知机,第二篇是2016年Facebook AI  Research 提出的DCGANs,在前一篇的基础上使用了深度卷积神经网络。

GAN的原理

GAN主要分为两个网络,一个是G(Generator)生成网络,一个是D(Discriminator)判别网络。

他们的作用分别是:

G:利用随机的vector z生成一张图片,即为G(z)。

D:判别图片是否为真实图片。如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。

在训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。

最后博弈的结果是什么?在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。

这样我们的目的就达成了:我们得到了一个生成式的模型G,它可以用来生成图片。

接下来我们看看D和G究竟需要怎么博弈去逼近我们想要的结果呢?

公式分析:

  • 整个式子由两项构成。x表示真实图片,z表示输入G网络的vector,而G(z)表示G网络生成的图片。

  • D(x)表示D网络判断真实图片是否真实的概率(因为x就是真实的,所以对于D来说,这个值越接近1越好)。而D(G(z))是D网络判断G生成的图片的是否真实的概率。

  • G的目的:上面提到过,D(G(z))是D网络判断G生成的图片是否真实的概率,G应该希望自己生成的图片“越接近真实越好”。也就是说,G希望D(G(z))尽可能得大,这时V(D, G)会变小。因此我们看到式子的最前面的记号是min_G。

  • D的目的:D的能力越强,D(x)应该越大,D(G(x))应该越小。这时V(D,G)会变大。因此式子对于D来说是求最大(max_D)

  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值