GAN[3]:DCGAN CNNs在GAN中的应用,100+行代码实现

本文介绍了如何使用DCGAN进行无监督学习,详细阐述了DCGAN与传统GAN的区别,如取消pooling层、采用卷积和反卷积、使用批量归一化等。通过简化代码实现,展示了DCGAN在图像生成和特征提取上的能力,并附带了训练过程中的图像变化和动态效果,表明其收敛速度和效果优于基本的多层感知机GAN。
摘要由CSDN通过智能技术生成

UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS


DCGAN

DCGAN和GAN原理基本是差不多,只是它把原本GAN中的生成模型G和判别模型D的多层感知机改成了两个神经网络(CNN)。但是还对网络的结构做了一定的调整。

  1. 取消pooling层。G采用反卷积(Deconvolutional layer)来进行上采样,D加了带步长(stride)的卷积来替代pooling
  2. D和G都是用Batch Normalization
  3. 没有全连接层(FC),纯粹的CNN
  4. G隐藏层用ReLU,最后一层用tanh做激活函数
  5. D隐藏层用LeakyReLU,最后一层用softmax做激活函数

以图像左上角为例,传统的卷积操作卷积核的核心一般是在输入图像内部的,而反卷积的卷积核核心是会超出外面的,所以有放大作用。但注意只是size放大,值并没有放大。

这里写图片描述

这是生成器的网络结构,文中并没有具体给出判别器的结构。

DCGAN实现了两个功能,一是可以用来作为无监督的特征提取器,类似K-means那样。另一个则是让图片实现了类似词向量那样的加减功能。(e.g. woman - king - man = queen)

这里写图片描述

实现

本次实验参考了Github上面的某一版本的代码,进行精简实现。

实验环境

Tensorflow == 1.8.0

Python = 3.5.2

matplotlib

numpy

[可选]ipython(安装方法

效果图

最初
这里写图片描述
中间某状态
这里写图片描述
动态效果
这里写图片描述

收敛速度及效果明显比用多层感知机的GAN要好

代码

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
import numpy as np
import os
import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt
%matplotlib inline

img_height = 28
img_width = 28
batch_size = 100
out_height = 28
out_width = 28
c_dim = 1
y_dim = 10
df_dim = 64
dfc_dim = 1024
gf_dim = 64
gfc_dim = 1024
max_epoch = 300
z_dim = 100 # 噪声维度
save_path = './dcgan_output2/'


def lrelu(x,leak=0.2):
    '''参考Rectier N
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值