百科问答小站 logo
百科问答小站 font logo



GAN的生成器是怎么产生图片的? 第1页

  

user avatar   hoshi-83-39 网友的相关建议: 
      

原 GAN(Goodfellow et al., 2014)的完整理论推导与 TensorFlow 实现请查看机器之心的 GitHub 项目与文章:GAN 完整理论推导与实现

假设提问者已了解GAN的原理,只是单纯不知道G的工作过程。下面只介绍生成器G。

生成器G可以用深度神经网络来表示生成函数,而且限制仅限于可微。输入数据z可以从任意的分布中采样,G的输入也无需与深度网络的第一层输入一致(例如,可以将输入z分为两部分:z1和z2,分别作为第一层和最后一层的输入,如果z2服从高斯分布,那么(x | z1)服从条件高斯分布)。但z的维数要至少与x的维数一致,才能保证z撑满整个x样本空间。G的网络模型也不受任何限制,可以采用多层感知机、卷积网络、自编码器等。因此,GAN对生成器的限制很少。

拿DCGAN举个例子:

DCGAN是第一个把Batch normalization引入到GAN的网络架构,并且使用了Adam等方法,增强了网络的稳定性。

该网络有4个卷积层,所有的位于BN(输出层除外)和校正线性单元(ReLU)激活之后。

它将随机向量z(从正态分布中抽取)作为输入。将z重塑为4D形状之后,将其馈送到启动一系列上采样层的生成器中。

每个上采样层都代表一个步幅为2的转置卷积(Transpose convolution)运算。转置卷积与常规卷积类似。

一般来说,常规卷积从宽且浅的层延展为更窄、更深的层。转移卷积走另一条路。他们从深而窄的层次走向更宽更浅。

转置卷积运算的步幅定义了输出层的大小。在“相同”的填充和步幅为2时,输出特征的大小将是输入层的两倍。

发生这种情况的原因是,每次我们移动输入层中的一个像素时,我们都会将输出层上的卷积内核移动两个像素。换句话说,输入图像中的每个像素都用于在输出图像中绘制一个正方形。


将一个3x3的内核在一个步幅为2的2x2输入上进行转置,就相当于将一个3x3的内核在一个步幅为2的5x5输入上进行卷积运算。简而言之,生成器开始于这个非常深但很窄的输入向量开始。在每次转置卷积之后,z变得更宽、更浅。所有的转置卷积都使用5x5内核的大小,且深度从512减少到3——代表RGB彩色图像。

最后一层通过双曲正切(tanh)函数输出一个32x32x3的张量——值在-1和1之间进行压缩。

这个最终的输出形状是由训练图像的大小来定义的。在这种情况下,如果是用于SVHN的训练,生成器生成32x32x3的图像。但是,如果是用于MNIST的训练,则会生成28x28的灰度图像。


这个知乎专栏为深度学习而设,欢迎大家关注与投稿。




  

相关话题

  为什么谈论深度学习工具时,很少有人讨论matlab的神经网络工具包? 
  凸分析和凸优化有什么推荐的教材吗? 
  如何评价亚马逊AI新开源自动机器学习项目AutoGluon? 
  在计算资源有限的情况下,有什么深度学习的选题可以推荐/避免? 
  为什么Bert中的CLS在未fine tune时作为sentence embedding性能非常糟糕? 
  物理专业的学生如何看待机器学习和大数据这些方向呢? 
  如何看待谷歌公开 tensorflow 专用处理器 TPU? 
  你实践中学到的最重要的机器学习经验是什么? 
  三门问题(蒙提霍尔悖论)变种,如果主持人不知道哪个门是汽车随便蒙门打开正好是羊这时观众还需要换门吗? 
  使用强化学习解决实际问题时常常避不开环境模拟或者使用离线强化学习算法,两者分别有什么优缺点? 

前一个讨论
数据分析师日常工作是什么?
下一个讨论
有没有200以内平价香水推荐?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利