【GANs】Deep Convolution Generative Adversarial Network
3 DCGAN
Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks
3.1 简介
深度卷积神经网络(Deep Convolution Generative Adversarial Nets)的生成网络
在DCGAN中,
- 判别网络是一个传统的深度卷积神经网络,但使用了带步长的卷积来实现下采样操作,不用 m a x p o o l i n g maxpooling maxpooling操作;
- 生成网络使用了一个特殊的深度卷积网络来实现。如上图,使用微步卷积来生成 64 × 64 64×64 64×64大小的图像。第一层是全连接层,输入是从均匀分布中随机采样的100维向量 z z z,输出是 4 × 4 × 1024 4×4×1024 4×4×1024的向量,后面是四层微步卷积,没有汇聚层。
DCGAN的主要优点是通过一些经验性的网络结构设计使得对抗训练更加稳定。比如:
- 使用带步长的卷积(在判别网络中)和微步卷积(在生成网络中)来代替汇聚操作,以免损失信息;
- 使用批量归一化;
- 去除卷积层之后的全连接层;
- 在生成网络中,除了最后一层使用了 T a n h Tanh Tanh激活函数以外,其余层都使用 R e L U ReLU ReLU函数;
- 在判别网络中,都是用 L e a k y R e L U LeakyReLU LeakyReLU函数。
3.2 DGGAN实现
# DCGAN_2016.py
import os
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.models import Sequential, Model
from tensorflow.keras.layers import Dense, LeakyReLU, BatchNormalization, Reshape, Input
from tensorflow.keras.layers import UpSampling2D, Conv2D, Activatio