生成式对抗网络GAN

判别式模型和生成是模型的区别:
假设研究对象为变量为x,类别变量为y,则:

判别式模型:
只是对给定的样本进行分类,不关心数据如何生成。
按照一定的判别准则,从数据中直接学习决策函数y=f(x)或者条件概率分布p(y|x;a)作为预测的模型
典型的判别模型包括:k近邻法,决策树,最大熵模型,支持向量机等
生成式模型:
根据生成假设,哪个类别最有可能生成这个样本
从数据中学习联合概率分布p(x,y),其之后可以转变为p(y|x)作为预测模型,例如利用条件概率分布p(y|x)=p(x,y)/p(x)
生成对抗网络GAN基本原理:
GAN包括两部分:生成器和判别器
生成器:从随机噪声中生成图像(随机噪声通常从均匀分布或高斯分布中获取)
判别器:其输入为生成器生成的图像和来自训练集中的真实图像,并对其进行判别。得到输出值为一个0到1之间的数,表示图像为真实图像的概率,real为1,fake为0.
在这里插入图片描述
来自真实数据的概率越大越好,来自生成样本的概率越小越好
尽量正确的判断接受到的图像是生成的还是真实的图像
在这里插入图片描述

生成的图片让判别器难以判别真假
尽量生成接近真实数据的图片
先更新判别器
固定生成器G,更新判别器D
固定判别器D,更新判别器G
更新要使梯度下降
GAN在生成模型之外引入一个判别模型,通过两者之间的对抗训练达到优化目的
生成器:
GAN生成器网络

import tensorflow as tf
import keras
from  keras import  layers
import numpy as np
latent_dim=32
height=32
width=32
channels=3
generator_input=keras.Input(shape=(latent_dim,))
x=layers.Dense(128*16*16)(generator_input)#将输入转换为大小为16*16的128个通道的特征图
x=layers.LeakyReLU()(x)
x=layers.Reshape((16,16,128))(x)
x=layers.Conv2D(256,5,padding='same')(x)
x=layers.LeakyReLU()(x)
x=layers.Conv2DTranspose(256,4,strides=2,padding='same')(x)
x=layers.LeakyReLU()(x)
x=layers.Conv2D(256,5,padding='same')(x)
x=layers.LeakyReLU()(x)
x=layers.Conv2D(256,5,padding='same')(x)
x=layers.LeakyReLU()(x)
x=layers.Conv2D(channels,7,activation='tanh',padding='same')(x)
generator=keras.models.Model(generator_input,x)
generator.summary()

GAN判别器网络


discriminator_input=layers.Input(shape=(height,width,channels))
x=layers.Conv2D(128,3)(discriminator_input)
x=layers.LeakyReLU()(x)
x=layers.Conv2D(128,4,strides=2)(x)
x=layers.LeakyReLU()(x)
x=layers.Conv2D(128,4,strides=2)(x)
x=layers.LeakyReLU()(x)
x=layers.Conv2D(128,4,strides=2)(x)
x=layers.LeakyReLU()(X)
x=layers.Flatten()(x)
x=layers.Dropout(0.4)(x)
x=layers.Dense(1,activation='sigmoid')(x)
discriminator=keras.models.Model(discriminator_input,x)#将输入转换为一个二进制分类决策
discriminator.summary()
discriminator_optimizer=keras.optimizers.RMSprop(
    lr=0.0008,
    clipvalue=1.0,#限制梯度值的范围
    decay=1e-8 #使用学习率衰减
)
discriminator.compile(optimizer=discriminator_optimizer,loss='binary_crossentropy')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值