>- **🍨 本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/k-vYaC8l7uxX51WoypLkTw) 中的学习记录博客**
>- **🍦 参考文章地址: [🔗深度学习100例-生成对抗网络(GAN)手写数字生成 | 第18天](https://mtyjkh.blog.csdn.net/article/details/118995896)**
>- **🍖 作者:[K同学啊](https://mp.weixin.qq.com/s/k-vYaC8l7uxX51WoypLkTw)**
1.设置GPU
import tensorflow as tf
gpus = tf.config.list_physical_devices("GPU")
if gpus:
tf.config.experimental.set_memory_growth(gpus[0], True) #设置GPU显存用量按需使用
tf.config.set_visible_devices([gpus[0]],"GPU")
# 打印显卡信息,确认GPU可用
print(gpus)
得到结果:
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
from tensorflow.keras import layers, datasets, Sequential, Model, optimizers
from tensorflow.keras.layers import LeakyReLU, UpSampling2D, Conv2D
import matplotlib.pyplot as plt
import numpy as np
import sys,os,pathlib
2.定义训练参数
img_shape = (28, 28, 1)
latent_dim = 200
二,什么是对抗神经网络
- 简单介绍
生成对抗网络(GAN) 包含生成器和判别器,两个模型通过对抗训练不断学习、进化。
生成器(Generator):生成数据(大部分情况下是图像),目的是“骗过”判别器。
鉴别器(Discriminator):判断这张图像是真实的还是机器生成的,目的是找出生成器生成的“假数据”。
- 应用领域
GAN 的应用十分广泛,它的应用包括图像合成、风格迁移、照片修复以及照片编辑,数据增强等等。
1)风格迁移
图像风格迁移是将图像A的风格转换到图像B中去,得到新的图像。
2)图像生成
GAN 不但能生成人脸,还能生成其他类型的图片,比如漫画人物。
三、网络结构
简单来讲,就是用生成器生成手写数字图像,用鉴别器鉴别图像的真假。二者相互对抗学习(卷),在对抗学习(卷)的过程中不断完善自己,直至生成器可以生成以假乱真的图片(鉴别器无法判断其真假)。结构图如下:
GAN步骤:
1.生成器(Generator)接收随机数并返回生成图像。
2.将生成的数字图像与实际数据集中的数字图像一起送到鉴别器(Discriminator)。
3.鉴别器(Discriminator)接收真实和假图像并返回概率,0到1之间的数字,1表示真,0表示假。
四、构建生成器
def build_generator():
# ======================================= #
# 生成器,输入一串随机数字生成图片
# ======================================= #
model = Sequential([
layers.Dense(256, input_dim=latent_dim),
layers.LeakyReLU<