第一节是只用了一个隐藏层,这节生成器和鉴定器都将使用卷积神经网络,看看会不会产生不一样的结果。
1.导入训练和训练模型所需的所有包,模块以及库。
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from keras.datasets import mnist
from keras.layers import Activation, BatchNormalization, Dense, Dropout, Flatten, Reshape
from keras.layers.advanced_activations import LeakyReLU
from keras.layers.convolutional import Conv2D, Conv2DTranspose
from keras.models import Sequential
from keras.optimizer_v2 import adam as Adam
此节也是使用的mnist数据集,可以直接从keras.datasets中导入mnist数据集。
2.模型维度的输入
img_rows = 28
img_cols = 28
channels = 1
# 输入图像的维度
img_shape = (img_rows, img_cols, channels)
# 噪声向量Z的长度
z_dim = 100
3.构造生成器
def build_generator(z_dim):
model = Sequential()
# 通过全连接层将输入重新调整大小7*7*256的张量
model.add(Dense(256 * 7 * 7, input_dim=z_dim))
model.add(Reshape((7, 7, 256)))
# 通过转置卷积层将7*7*256的张量转换为14*14*128的张量
model.add(Conv2DTranspose(128, kernel_size=3, strides=2, padding='same'))
# 批归一化
model.add(BatchNormalization())
# Leaky ReLU 激活函数
model.add(LeakyReLU(alpha=0.01))
# 通过转置卷积层将14*14*128的张量转换为14*14*64的张量
model.add(Conv2DTranspose(64, kernel_size=3, strides=1, padding='