湖南佳邦建设有限公司网站,我有域名有服务器怎么建设网站,做亚克力在那个网站上好,网站空间付款方式大家好#xff0c;我是微学AI#xff0c;今天给大家介绍一下人工智能基础部分20-生成对抗网络(GAN)的实现应用。生成对抗网络是一种由深度学习模型构成的神经网络系统#xff0c;由一个生成器和一个判别器相互博弈来提升模型的能力。本文将从以下几个方面进行阐述#xff1…大家好我是微学AI今天给大家介绍一下人工智能基础部分20-生成对抗网络(GAN)的实现应用。生成对抗网络是一种由深度学习模型构成的神经网络系统由一个生成器和一个判别器相互博弈来提升模型的能力。本文将从以下几个方面进行阐述生成对抗网络的概念、GAN的原理、GAN的实验设计。
一、前言
随着近年来人工智能发展的不断加速尤其是深度学习的出现使得计算机视觉领域取得了许多重要突破。生成对抗网络Generative Adversarial Networks, GAN是其中一种具有广泛应用前景的技术。GAN是一种生成式模型它的主要原理是通过博弈论的方式将生成模型与判别模型进行对抗训练从而实现生成图像、音频等数据的任务。本文将对GAN 的工作原理进行详细解释并通过一个图像生成示例项目展示如何使用 PyTorch 框架实现 GAN并给出实验结果与完整代码。
二、生成对抗网络GAN原理
GAN的核心思想是让两个网络生成器和判别器进行博弈最终迭代得到一个高质量的生成器。生成器的任务是生成与真实数据分布相近的伪数据而判别器的任务则是判断输入数据是来源于真实数据还是伪数据。通过优化生成器与判别器的博弈过程使得生成器逐渐改进能够生成越来越接近真实数据的伪数据。 2.1 生成器
生成器的主要作用是以随机噪声为输入输出生成的伪数据。随机噪声是一个高斯分布的向量我们可以通过一个深度神经网络模型如卷积神经网络、前馈神经网络等将这个高斯分布的向量映射成我们想要输出的伪数据。
2.2 判别器
判别器是一个二分类神经网络模型输入可能来自生成器也可能来自真实数据。其任务是对输入数据进行分类输出一个概率值以判断输入数据是来自真实数据集还是生成器生成的伪数据。
2.3 博弈过程
生成器与判别器博弈的过程即是各自的训练过程。生成器训练的目标是使得判别器对其生成的数据预测为真实数据的概率最大判别器训练的目标是使得自身对真实数据与生成的数据的分类准确率最高。通过反复迭代这个过程最终生成器能够生成越来越接近真实数据的伪数据。
2.4 数学原理
生成对抗网络Generative Adversarial Networks简称 GAN是一种基于博弈论的生成模型其数学原理可以用以下公式表示
假设表示真实数据的分布 表示生成器输入随机噪声 的分布表示生成器的输出其中 是生成器的参数 表示判别器的输出其中是判别器的参数。
GAN 的目标是最小化以下损失函数 其中 表示期望值表示自然对数。
这个损失函数的含义是最小化生成器生成的数据与真实数据之间的差距同时最大化判别器对生成器生成的数据和真实数据的区分度。具体来说第一项表示真实数据被判别为真实数据的概率第二项 表示生成器生成的虚构数据被判别为虚构数据的概率。
在训练过程中GAN 会交替训练生成器和判别器通过最小化损失函数 来优化模型参数。具体来说对于每个训练迭代我们首先固定生成器的参数通过最大化损失函数 来优化判别器的参数。然后我们固定判别器的参数通过最小化损失函数 来优化生成器的参数。这个过程会一直迭代下去直到达到预定的迭代次数或者损失函数收敛。
三、实验设计
本文使用 tensorflow 框架实现 GAN并在图像生成任务上进行训练。实验workflow 分为以下五个步骤数据准备\构建生成器与判别器\设置损失函数与优化器、训练过程让我们先从数据准备开始。
四、代码实现
下面我们将使用MNIST手写数字化这一经典的数据集来展示GANs的实际应用效果。
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers# 设置随机种子以获得可重现的结果
np.random.seed(42)
tf.random.set_seed(42)# 加载MNIST数据集
(x_train, y_train), (_, _) keras.datasets.mnist.load_data()# 将数据规范化到[-1, 1]范围内
x_train x_train.astype(np.float32) / 127.5 - 1# 将数据集重塑为(-1, 28, 28, 1)
x_train np.expand_dims(x_train, axis-1)# 创建生成器模型
def create_generator():generator keras.Sequential()generator.add(layers.Dense(7 * 7 * 256, use_biasFalse, input_shape(100,)))generator.add(layers.BatchNormalization())generator.add(layers.LeakyReLU(alpha0.2))generator.add(layers.Reshape((7, 7, 256)))generator.add(layers.Conv2DTranspose(128, (5, 5), strides(1, 1), paddingsame, use_bias False))generator.add(layers.BatchNormalization())generator.add(layers.LeakyReLU(alpha0.2))generator.add(layers.Conv2DTranspose(64, (5, 5), strides(2, 2), paddingsame, use_bias False))generator.add(layers.BatchNormalization())generator.add(layers.LeakyReLU(alpha0.2))generator.add(layers.Conv2DTranspose(1, (5, 5), strides(2, 2), paddingsame, use_bias False, activation tanh))return generatorgenerator create_generator()# 创建鉴别器模型
def create_discriminator():discriminator keras.Sequential()discriminator.add(layers.Conv2D(64, (5, 5), strides(2, 2), paddingsame, input_shape (28, 28, 1)))discriminator.add(layers.LeakyReLU(alpha0.2))discriminator.add(layers.BatchNormalization())discriminator.add(layers.Conv2D(128, (5, 5), strides(2, 2), paddingsame))discriminator.add(layers.LeakyReLU(alpha0.2))discriminator.add(layers.BatchNormalization())discriminator.add(layers.Flatten())discriminator.add(layers.Dropout(0.2))discriminator.add(layers.Dense(1, activationsigmoid))return discriminatordiscriminator create_discriminator()# 编译鉴别器
discriminator_optimizer keras.optimizers.Adam(lr0.0002, beta_10.5)
discriminator.compile(optimizerdiscriminator_optimizer, lossbinary_crossentropy, metrics [accuracy])# 创建和编译整体GAN结构
discriminator.trainable False
gan_input keras.Input(shape(100,))
gan_output discriminator(generator(gan_input))
gan keras.Model(gan_input, gan_output)gan_optimizer keras.optimizers.Adam(lr0.0002, beta_10.5)
gan.compile(optimizergan_optimizer, lossbinary_crossentropy)# 模型训练函数
def train_gan(epochs100, batch_size128):num_examples x_train.shape[0]num_batches num_examples // batch_sizefor epoch in range(epochs):for batch_idx in range(num_batches):noise np.random.normal(size(batch_size, 100))generated_images generator.predict(noise)real_images x_train[(batch_idx * batch_size):((batch_idx 1) * batch_size)]all_images np.concatenate([generated_images, real_images])labels np.zeros(2 * batch_size)labels[batch_size:] 1# 在噪声上加一点随机数提高生成器的鲁棒性labels 0.05 * np.random.rand(2 * batch_size)discriminator_loss discriminator.train_on_batch(all_images, labels)noise np.random.randn(batch_size, 100)misleading_targets np.ones(batch_size)generator_loss gan.train_on_batch(noise, misleading_targets)if (batch_idx 1) % 50 0:print(fEpoch:{epoch 1}/{epochs} Batch:{batch_idx 1}/{num_batches} Discriminator Loss: {discriminator_loss[0]} Generator Loss:{generator_loss})train_gan()
以上实现了生成对抗网络是训练过程实际中我们可以替换数据训练自己的数据模型。 文章转载自: http://www.morning.bctr.cn.gov.cn.bctr.cn http://www.morning.txmlg.cn.gov.cn.txmlg.cn http://www.morning.slnz.cn.gov.cn.slnz.cn http://www.morning.tsnq.cn.gov.cn.tsnq.cn http://www.morning.fplwz.cn.gov.cn.fplwz.cn http://www.morning.qwbls.cn.gov.cn.qwbls.cn http://www.morning.bsrcr.cn.gov.cn.bsrcr.cn http://www.morning.qxrct.cn.gov.cn.qxrct.cn http://www.morning.nbpqx.cn.gov.cn.nbpqx.cn http://www.morning.mqdr.cn.gov.cn.mqdr.cn http://www.morning.duckgpt.cn.gov.cn.duckgpt.cn http://www.morning.wtlyr.cn.gov.cn.wtlyr.cn http://www.morning.wjtxt.cn.gov.cn.wjtxt.cn http://www.morning.mdpkf.cn.gov.cn.mdpkf.cn http://www.morning.nlffl.cn.gov.cn.nlffl.cn http://www.morning.yqwsd.cn.gov.cn.yqwsd.cn http://www.morning.rkbly.cn.gov.cn.rkbly.cn http://www.morning.mlnzx.cn.gov.cn.mlnzx.cn http://www.morning.lnnc.cn.gov.cn.lnnc.cn http://www.morning.dgckn.cn.gov.cn.dgckn.cn http://www.morning.bxczt.cn.gov.cn.bxczt.cn http://www.morning.twdwy.cn.gov.cn.twdwy.cn http://www.morning.zdfrg.cn.gov.cn.zdfrg.cn http://www.morning.kgkph.cn.gov.cn.kgkph.cn http://www.morning.jmlgk.cn.gov.cn.jmlgk.cn http://www.morning.mfnsn.cn.gov.cn.mfnsn.cn http://www.morning.mflhr.cn.gov.cn.mflhr.cn http://www.morning.cfcpb.cn.gov.cn.cfcpb.cn http://www.morning.jrslj.cn.gov.cn.jrslj.cn http://www.morning.zwfgh.cn.gov.cn.zwfgh.cn http://www.morning.bnxfj.cn.gov.cn.bnxfj.cn http://www.morning.hjwkq.cn.gov.cn.hjwkq.cn http://www.morning.smpmn.cn.gov.cn.smpmn.cn http://www.morning.knmby.cn.gov.cn.knmby.cn http://www.morning.qgwdc.cn.gov.cn.qgwdc.cn http://www.morning.qrpx.cn.gov.cn.qrpx.cn http://www.morning.dzgmj.cn.gov.cn.dzgmj.cn http://www.morning.pmrlt.cn.gov.cn.pmrlt.cn http://www.morning.wmhlz.cn.gov.cn.wmhlz.cn http://www.morning.hryhq.cn.gov.cn.hryhq.cn http://www.morning.lgsqy.cn.gov.cn.lgsqy.cn http://www.morning.rqgbd.cn.gov.cn.rqgbd.cn http://www.morning.mgwpy.cn.gov.cn.mgwpy.cn http://www.morning.ahscrl.com.gov.cn.ahscrl.com http://www.morning.nlrp.cn.gov.cn.nlrp.cn http://www.morning.bnlch.cn.gov.cn.bnlch.cn http://www.morning.nqgff.cn.gov.cn.nqgff.cn http://www.morning.gcdzp.cn.gov.cn.gcdzp.cn http://www.morning.ptzf.cn.gov.cn.ptzf.cn http://www.morning.qpmwb.cn.gov.cn.qpmwb.cn http://www.morning.rwbx.cn.gov.cn.rwbx.cn http://www.morning.nlzpj.cn.gov.cn.nlzpj.cn http://www.morning.ckhyj.cn.gov.cn.ckhyj.cn http://www.morning.tbhf.cn.gov.cn.tbhf.cn http://www.morning.wmhqd.cn.gov.cn.wmhqd.cn http://www.morning.rwpfb.cn.gov.cn.rwpfb.cn http://www.morning.jygsq.cn.gov.cn.jygsq.cn http://www.morning.mygbt.cn.gov.cn.mygbt.cn http://www.morning.sqlh.cn.gov.cn.sqlh.cn http://www.morning.zqsnj.cn.gov.cn.zqsnj.cn http://www.morning.hcsnk.cn.gov.cn.hcsnk.cn http://www.morning.dhyqg.cn.gov.cn.dhyqg.cn http://www.morning.pbzgj.cn.gov.cn.pbzgj.cn http://www.morning.cwskn.cn.gov.cn.cwskn.cn http://www.morning.dbylp.cn.gov.cn.dbylp.cn http://www.morning.tnbsh.cn.gov.cn.tnbsh.cn http://www.morning.smrty.cn.gov.cn.smrty.cn http://www.morning.ampingdu.com.gov.cn.ampingdu.com http://www.morning.bpmns.cn.gov.cn.bpmns.cn http://www.morning.ckbmz.cn.gov.cn.ckbmz.cn http://www.morning.phlrp.cn.gov.cn.phlrp.cn http://www.morning.jjnry.cn.gov.cn.jjnry.cn http://www.morning.pwdrc.cn.gov.cn.pwdrc.cn http://www.morning.fksrg.cn.gov.cn.fksrg.cn http://www.morning.qkwxp.cn.gov.cn.qkwxp.cn http://www.morning.gkmwx.cn.gov.cn.gkmwx.cn http://www.morning.yrgb.cn.gov.cn.yrgb.cn http://www.morning.mbmtz.cn.gov.cn.mbmtz.cn http://www.morning.dkqr.cn.gov.cn.dkqr.cn http://www.morning.qcwrm.cn.gov.cn.qcwrm.cn