深度学习笔记56_GAN也很简单_GAN模型的训练
2023-03-16 来源:你乐谷
深度学习笔记56_GAN也很简单_GAN模型的训练
本文核心词:人工智能,深度学习,keras训练GAN图像
训练的流程如下:
从潜在空间中抽取随机的点(随机噪声)。
利用这个随机噪声用 generator 生成图像。
将生成图像与真实图像混合。
使用这些混合后的图像以及相应的标签(真实图像为“真”,生成图像为“假”)来训练discriminator
在潜在空间中随机抽取新的点。
使用这些随机向量以及全部是“真实图像”的标签来训练 gan。这会更新生成器的权重 (只更新生成器的权重,因为判别器在 gan 中被冻结),其更新方向是使得判别器能够将生成图像预测为“真实图像”。这个过程是训练生成器去欺骗判别器。
# 生成图像模型
import keras
from keras import layers
import numpy as np
latent_dim = 32
height = 32
width = 32
channels = 3
# 输入是一个潜在的随机向量,向量shape为(32,)
generator_input = keras.Input(shape=(latent_dim,))
# 第一层是一个全连接成,神经元的个数为(128*16*16)
x = layers.Dense(128*16*16)(generator_input)
# 激活函数使用 LeakyReLU
x = layers.LeakyReLU()(x)
# 将该层的输出转化为大小为(16,16),堆叠为128层的特征图
x = layers.Reshape((16,16,128))(x)
# 开始进行卷积网络
x = layers.Conv2D(256,kernel_size=5,padding=same)(x)
x = layers.LeakyReLU()(x)
# 转置卷积:完成对数据的尺寸的放大
x = layers.Conv2DTranspose(256,kernel_size=4,strides=2,padding=same)(x)
x = layers.LeakyReLU()(x)
# 卷积网络
x = layers.Conv2D(256, kernel_size=5, padding=same)(x)
x = layers.LeakyReLU()(x)
x = layers.Conv2D(256, kernel_size=5, padding=same)(x)
x = layers.LeakyReLU()(x)
# 生成一个大小为 32×32 的单通道特征图
x = layers.Conv2D(channels,
kernel_size=7,
activation=tanh,
padding=same)(x)
#将生成器模型实例化,它将形状为 (latent_dim,)
# 的输入映射到形状为 (32, 32, 3) 的图像