tensorflow学习5----GAN模型初探
生成模型:
通过观测学习样本和标签的联合概率分布P(X,Y)进行训练,训练好的模型能够生成符合样本分布的新数据,在无监督学习方面,生成式模型能够捕获数据的高阶相关性,通过学习真实数据的本质特征,刻画样本数据的分布特征,生成与训练样本相似的新数据
生成式模型的分类:1. Autoencoder 2.自回归模型 3.生成对抗网络(gan,,generative adversarial networks)
Generative Adversarial Nworks: 1. generative model--->G 2.discriminative model------>D
Generative model: 生成模型捕捉样本数据的分布。
Discriminative model :是一个二分类器,用于判别输入数据是否真实。
总结:模型的优化过程属于二元极小极大博弈问题,模型训练时固定一方,更新另一方的参数,交替迭代,使得对方的错误最大化。最终,G 能估测出样本数据的分布。
Generitive Adversarial Networks Advantage :
1.可以渐进的逼近任意概率分布,可以认为是一种非参数的产生式建模方法,如果鉴别器训练良好,那么生成器可以玩美的学习到训练样本的分布。 GAN是渐进一致的!generative adversarial model
.GAN 是整幅图像进行衡量、评价和生成,生成采样的运行时间更短,一次产生一个样本,GAN考虑了整体信息且速度相对较快。
3.GAN理论上可以训练任何生成网络,可以训练生成靠近真实数据的地方产生样本点的模型,没有必要遵循任何种类的因子分解去设计模型。
4.劣势: 训练过程的稳定性和收敛性难以保证。
目前Generative Adversarial Networks 的分类:
1.CGAN:Conditional generative adversarial networks.
2.DCGAN: deep convolution generative adversarial networks.
3.VAEGAN:自动编码生成对抗网络
GAN的起源:
来源于博弈论的纳什均衡,包含generative model(G) 和 discriminative model (D) 。
目的: D辅助G产生与真实数据分布一致的伪数据。
GAN用于二次场降噪:
1.模型的输入为随机高斯白噪声信号z。 --------->二次场实测信号
2.噪声信号经由生成器经由G模型 映射到某个新的数据空间,得到生成数据G(z)。
3.由D 模型 根据真实数据x(二次场反演的理论信号)与生成数据G(z)的输入来分别输出一个概率值,表示D判断输入是真实数据还是生成虚假数据的置信度,以此判断G的产生数据的性能的好坏。
4.当D不能区别真实数据x和生成数据G(z)时,认为生成器G达到最优。
D的目标是区分两者: D(x)尽可能大,而同时使D(G(z))尽量小,两者差异尽可能大。
G的目标: 使产生的数据在D上的表现D(G(z))尽量与真实数据在D上的表现D(x)一致,让D不能区分生成数据与真实数据。
D和G相互竞争相互对抗,G和D的性能在迭代过程中不断提高,直到最后D(G(z))和真实数据的表现D(x)一致后不再优化。
加入求期望的操作,使G产生的数据既与真实数据有一定相似,同时又不完全同于真实数据,提高了模型的泛化能力。
注意: GAN不需要预设数据分布,理论上可以完全逼近真实数据,这也是GAN最大的优势。
特别注意,对于较大的图片,较多像素的情形,简单GAN的方式不太可控,经常出现训练崩塌的情形。
GAN中,每次学习参数的更新过程,为了防止这种情形,设为D更新K回,G才更新1回。
CGAN: 给GAN添加约束条件:草稿图生成图片
DCGAN:将有监督的学习模型CNN和无监督学习的GAN结合在一起。
infoGAN:输出改为G(z,c),有隐含意义的一组隐变量c和不能分解的有意义的noise z。
对抗网路的目的是在高维非凹的参数空间中,找到纳什均衡。但在GAN中使用梯度下降只会找到低的损失,不能找到真正的纳什均衡。
对工程实践的四点建议:
1. discriminative model 最后一层去掉 sigmod
2.生成器与判别器的loss不取log
3.每次更新判别器D之后,把D中参数的绝对值截断到一个固定常数
4.用ADAM
GAN的应用
1.图片合成。
2.深度GAN模型,进行图片修补能根据确实区域的周边区域进行语义层面的修补,如 DCGAN+ADAM完成图像修补。
3.超分辨率:图像增强。 方法将16*16低分辨率图片作为约束条件,生成最合理解释的64*64的真实图片。

如此较好的超分辨率结果仅在小类别、规则分割的图片中适用。
超分辨率最通用的方法(super resolution generative adversarial networks,SRGAN)不依赖小类细化类别的数据集,能对各种类型的图片进行降噪和增强。SRGAN的特色是:
1.将图像空间的损失,替换为一个生成图像整体方差的约束项,以保证图像的平滑性
2.将真实数据与生成数据分别输入VGG-19网络根据得到的特征图的差异来定义损失项并对该差异加上规则化的处理。
3.结合三个损失:对抗损失,图像平滑项,特征图差异,送入GAN网络,生成超分辨率图片。
草稿图复原、图片上色、视频预测、文字生成图片(CGAN,以文本描述为条件来产生图像)(方法:文本进行编码后的特征与随机噪声信息串接输入产生器产生图像-->而编码后的文本特征也同时作为监督信号输入判别器以构建目标函数)
计算智能---》 认知智能-------》感知智能
tensorflow学习5----GAN模型初探的更多相关文章
- TensorFlow学习笔记12-word2vec模型
为什么学习word2word2vec模型? 该模型用来学习文字的向量表示.图像和音频可以直接处理原始像素点和音频中功率谱密度的强度值, 把它们直接编码成向量数据集.但在"自然语言处理&quo ...
- tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)
续集请点击我:tensorflow学习笔记——使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...
- TensorFlow学习笔记:保存和读取模型
TensorFlow 更新频率实在太快,从 1.0 版本正式发布后,很多 API 接口就发生了改变.今天用 TF 训练了一个 CNN 模型,结果在保存模型的时候居然遇到各种问题.Google 搜出来的 ...
- GAN模型生成手写字
概述:在前期的文章中,我们用TensorFlow完成了对手写数字的识别,得到了94.09%的识别准确度,效果还算不错.在这篇文章中,笔者将带领大家用GAN模型,生成我们想要的手写数字. GAN简介 对 ...
- tensorflow学习笔记——自编码器及多层感知器
1,自编码器简介 传统机器学习任务很大程度上依赖于好的特征工程,比如对数值型,日期时间型,种类型等特征的提取.特征工程往往是非常耗时耗力的,在图像,语音和视频中提取到有效的特征就更难了,工程师必须在这 ...
- GAN实战笔记——第三章第一个GAN模型:生成手写数字
第一个GAN模型-生成手写数字 一.GAN的基础:对抗训练 形式上,生成器和判别器由可微函数表示如神经网络,他们都有自己的代价函数.这两个网络是利用判别器的损失记性反向传播训练.判别器努力使真实样本输 ...
- 用tensorflow学习贝叶斯个性化排序(BPR)
在贝叶斯个性化排序(BPR)算法小结中,我们对贝叶斯个性化排序(Bayesian Personalized Ranking, 以下简称BPR)的原理做了讨论,本文我们将从实践的角度来使用BPR做一个简 ...
- Tensorflow学习笔记2019.01.22
tensorflow学习笔记2 edit by Strangewx 2019.01.04 4.1 机器学习基础 4.1.1 一般结构: 初始化模型参数:通常随机赋值,简单模型赋值0 训练数据:一般打乱 ...
- Tensorflow学习笔记2019.01.03
tensorflow学习笔记: 3.2 Tensorflow中定义数据流图 张量知识矩阵的一个超集. 超集:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S ...
随机推荐
- 程序------>数据结构
一程序概念: 1.对身边的任何一个事物进行认知和分类,从而得到一些信息: 2.在得到的信息基础之上建立了概念模型: 3.根据概念模型将我们生活中的实际问题转换成计算机能理解的形式: 4.用户通过人机交 ...
- oracle中nvarchar2()和varchar2()的区别
1.NVARCHAR2(10)是可以存进去10个汉字的,如果用来存英文也只能存10个字符. 2.而VARCHAR2(10)的话,则只能存进5个汉字,英文则可以存10个.
- TCP/IP具体解释--TCP首部的TimeStamp时间戳选项
TCP应该是以太网协议族中被应用最为广泛的协议之中的一个,这里就聊一聊TCP协议中的TimeStamp选项.这个选项是由RFC 1323引入的,该C建议提交于1992年.到今天已经足足有20个年头.只 ...
- 第一节:Git下载和安装
1.下载并安装github客户端:https://desktop.github.com/ 2.进入自己的主页,新建一个项目:
- MySQL 5.5 服务器变量详解(一)
autocommit={0|1} 设定MySQL事务是否自动提交,1表示立即提交,0表示需要显式提交.作用范围为全局或会话,可用于配置文件中(但在5.5.8之前的版本中不可用于配置文件),属于动态变量 ...
- MySQL innodb_flush_method 【转载】
innodb_flush_method这个参数控制着innodb数据文件及redo log的打开.刷写模式,对于这个参数,文档上是这样描述的: 有三个值:fdatasync(默认),O_DSYNC,O ...
- shell编程awk基础介绍
awk介绍 报告生成器,格式化文本输出 处理机制类似sed命令,自带循环处理 读入一行处理一行然后自动读取下一行再进行处理 sed命令换行的标识是固定的,只能是回车换行. awk里面的换行 ...
- Redis入门到高可用(一)——初识Redis
一.Redis是什么 * 开源 * 基于键值的存储服务系统 * 支持多种数据结构 * 高性能,功能丰富 二.Redis特性 ♦️ 概述 * 速度快 * 支持持久化 * 支持多种数据结构 * 支持多种编 ...
- maven 安装 配置
一.下载及安装 1.1 下载maven 3.1.1 先到官网http://maven.apache.org/download.cgi 下载最新版本(目前是3.1.1 ),下载完成后,解压到某个目录(本 ...
- PHP适配器模式
[IDatabase.php] <?php /** * 适配器模式 * 可以将不同的函数接口封装成统一的API * 应用举例1:数据库操作 mysql/mysqli/pdo * 应用举例2:缓存 ...