GAN生成对抗网络入门
1 GAN简介
生成对抗网络(GAN,Generative Adversarial Networks)是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。由2014年还在蒙特利尔读博士的lan Goodfellow引入深度学习领域。2016年,GAN热潮席卷AI领域顶级会议,从ICLR到NIPS,大量高质量论文被发表和探讨。Yann LeCun曾评论GAN是“20年来机器学习领域最酷的想法”。
机器学习的模型可大体分为两类:生成模型(Generative Model)和判别模型(Discriminative Model)。判别模型需要输入变量,通过某种模型来预测。生成模型是给定某种隐含信息,来随机产生观测数据。
GAN是更好的生成模型
2 GAN原理
GAN主要包括了两个部分,即生成器generator与判别器discriminator。生成器主要用来学习真实图像分布,从而让自身生成的图像更加真实,以骗过判别器。判别器则需要对接受的图片进行真假判断。

在训练过程中,生成器努力地让生成的图像更加真实,而判别器则努力地去识别出图像的真假,这个过程相当于一个二人博弈,随着时间的推移,生成器和判别器在不断地进行对抗,最终两个网络达到了一个动态平衡:生成器生成的图像接近于真实图像的分布,而辨别器识别不出真假图像,对于给定图像的预测为真的概率基本接近0.5(相当于随机猜测类别)
2.1 GAN原理举例
比如制造假币的团伙就相当于生成器,它们想通过伪造真钱来骗过银行,使得假币能够正常交易,而银行相当于判别器,需要判断进来的钱是真钱还是假币。因此假币团伙的目的是制造出银行识别不出的假币,而银行则是要想办法准确地识别出假币。
2.2 GAN原理总结
对于给定的真实图片,判别器要为其打上标签1;
对于给定的生成图片,判别器要为其打上标签0;
对于生成器传给判别器的生成图片,生成器希望判别器打上标签1。
训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开。
这样,G和D就构成了一个动态的“博弈过程”。
那么博弈的结果是什么呢?
在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。
目的:得到了一个生成模型G,可以用来生成图片。
3 GAN设计

4 GAN应用领域
- 图像生成
- 图像增强
- 风格化
- 艺术的图像创造
5 GAN入门代码示例
5.1 加载数据库
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import glob
import os
查看TensorFlow版本,这里使用tensorflow2.0。关于TensorFlow的知识后面有时间会写博客,还记得去年暑假,学了两个星期,结果开学不久TensorFlow迎来了2.0,并购了Keras等优秀的模型框架,算是彻底和1.x说了再见,计算图、会话彻底成为了过去时,后来不得不从新学习TensorFlow2.0。不过他不会让你失望,值得你付出的时间。
tf.__version__

使用内部MNIST数据集
#这里不需要测试数据集,所以用占位符去掉
(train_images,train_labels),(_,_) = tf.keras.datasets.mnist.load_data()
5.2 数据预处理
train_images.shape

#把数据变成图片的格式
train_images = train_images.reshape(train_images.shape[0],28,28,1)
train_images.shape

train_images.dtype

#把数据类型转换成float数据类型
train_images = train_images.astype('float32')
对数据做归一化处理;
目的:使数据的范围落在0的周围,因为激活函数在0的周围能发挥最好的作用;
因为图片数据的取值范围是(0-255)–>(-1,1)。
#对数据做归一化处理
train_images = (train_images - 127.5)/127.5

生成对抗网络(GAN)是一种深度学习模型,由生成器和判别器组成,两者在训练中形成动态博弈,生成器试图生成逼真的图像以欺骗判别器,而判别器则努力区分真实与生成的图像。GAN广泛应用于图像生成、图像增强、艺术创作等领域,本文还提供了一个简单的GAN入门代码示例,展示了如何在TensorFlow2.0中构建和训练模型。
最低0.47元/天 解锁文章
1120

被折叠的 条评论
为什么被折叠?



