gan

对抗神经网络(二)——DCGAN

穿精又带淫゛_ 提交于 2019-12-05 09:27:45
一、DCGAN介绍 DCGAN即使用卷积网络的对抗网络,其原理和GAN一样,只是把CNN卷积技术用于GAN模式的网络里,G(生成器)网在生成数据时,使用反卷积的重构技术来重构原始图片。D(判别器)网用卷积技术来识别图片特征,进而做出判别。同时,CDGAN中的卷积神经网络也做了一些结构的改变,以提高样本的质量和收敛速度。 DCGAN的generator网络结构图如下: G网中使用ReLU作为激活函数,最后一层使用Tanh作为激活函数。 去掉了FC层,使网络变为全卷积网络。 DCGAN的discriminator网络结构图如下: D中取消所有的池化层,使用转置卷积(transposed convolutional layer)并且步长大于等于2进行上采样。 D网中也加入stride的卷积代替pooling。 在D网和G网中均使用批量归一化(batch normalization),而在最后一层时通常不会使用batch normalization,这是为了保证模型能够学习到数据的正确均值和方差。 D网络中使用LeakyReLU作为激活函数。 DCGAN中换成了两个卷积神经网络(CNN)的G和D,可以刚好的学习对输入图像层次化的表示,尤其在生成器部分会有更好的模拟效果。DCGAN在训练过程中会使用Adam优化算法。 三、网络实现 以人脸数据为例 1、环境配置(Environments )

GAN论文阅读——CGAN

人盡茶涼 提交于 2019-12-05 09:26:57
论文标题:Conditional Generative Adversarial Nets 论文链接: https://arxiv.org/pdf/1411.1784.pdf 参考资料: http://blog.csdn.net/solomon1558/article/details/52555083 一、CGAN的思想 在 原始GAN学习笔记 中,我们提到过,与其他生成式模型相比,GAN这种竞争的方式不再要求一个假设的数据分布,即不需要formulate p(x),而是使用一种分布直接进行采样sampling,从而真正达到理论上可以完全逼近真实数据,这也是GAN最大的优势。然而,这种不需要预先建模的方法缺点是太过自由了,对于较大的图片,较多的 pixel的情形,基于简单 GAN 的方式就不太可控了。为了解决GAN太过自由这个问题,一个很自然的想法是给GAN加一些约束,于是便有了Conditional Generative Adversarial Nets(CGAN)【 Mirza M, Osindero S. Conditional 】。 这项工作提出了一种带条件约束的GAN,在生成模型(D)和判别模型(G)的建模中均引入条件变量y(conditional variable y),使用额外信息y对模型增加条件,可以指导数据生成过程。这些条件变量y可以基于多种信息,例如类别标签

GAN中判别器与极大似然估计的关联

那年仲夏 提交于 2019-12-05 09:22:15
在GAN中,对于判别器D来说,实际上就是一个普通的二分类问题。 根据文章《交叉熵,KL散度以及多分类问题下的极大似然估计》当中的思考,对于二分类问题的极大似然估计,有如下式子成立: L ( X , Y , θ ) = ∫ x ∫ y p ( x , y ) log q ( y | x ) d y d x = ∫ p ( x ) [ p ( y i = 1 | x i ) log q ( y i = 1 | x i ) + p ( y i = 0 | x i ) log q ( y i = 0 | x i ) ] d x //--> 那么,将上式的最后一步重新写成联合概率的形式,有 L ( X , Y , θ ) = ∫ [ p ( x , y = 1 ) log q ( y = 1 | x ) + p ( x , y = 0 ) log q ( y = 0 | x ) ] d x = ∫ [ p ( x , y = 1 ) log q ( y = 1 | x ) + p ( x , y = 0 ) log q ( y = 0 | x ) ] d x //--> 对应到GAN中来,D分类器要做的就是给定一个x,需要判断这个样本x是属于real data还是generated data,如果我们把属于real data当作y=1,generated data当作y=0,那么便有 L (

CGAN(conditional GANs)

浪子不回头ぞ 提交于 2019-12-05 09:21:27
论文: https://arxiv.org/pdf/1411.1784.pdf 介绍: 论文提出了GAN的有条件(限制)的版本,结构很简单,在数据中添加一个数据 y ,y 是在生成器和辨别器中都需要考虑的。对抗网络相对于 Markov 决策链优点众多:梯度下降时,只需要反向传播算法,在学习规程中不需要做推断,许多因素以及因素之间的相互关系可以在模型中融合的很好。论文提出的 CGAN 是在某些特定条件下,增加目标或者限制(任何标签)进而影响生成器的生成过程。 条件对抗网络: GAN 网络已在之前分析过,这里只列出一个方程式: 简单的解释该方程,生成器创建一个基于噪声分布 p(z) 的分布,来学习实际数据 x 的分布,生成器 G 用于生成数据。辨别器 D 用于辨别生成器的数据是来自生成器还是真实的数据分布,当辨别器不能分辨数据的来源时,也就是说,辨别器认为该数据 50%可能性来自真实数据采样分布,50% 可能性来自生成器,学习过程就完成了。 多模式模型: 尽管监督神经网络非常成功,但是仍然有两个问题:① 输出策略数量极大 ② 现在许多任务都是一对一输入输出映射。 为了解决第一个问题,通过其他形式的附加信息,比如通过自然语言来学习标签的表示向量。 为了解决第二个问题,使用条件概率生成模型,输入选择条件变量,同时输入输出映射为一对多。 CGANs: CGAN的公式极为简单

【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN

雨燕双飞 提交于 2019-12-05 09:19:45
大家好,今天开设新专栏《GAN模型结构》。在这个专栏中,我们会讲述各种各样的GAN的网络结构及其在各类任务中的应用 。 作者&编辑 | 言有三 三年前GAN刚出来的时候就开始关注GAN了,去年也写过一篇综述, 【技术综述】有三说GANs(上) ,不过因为时间问题一直没有更新更多的内容。 今年公众号也开设了GAN优化专栏,内容更新的差不多了,现在GAN模型结构也走起,在这两个网络专栏的加持下,希望我们能从理论到实践彻底玩转GAN。 1 GAN的基本结构 在机器学习中有两类模型,即判别式模型和生成是模型。 判别式模型即Discriminative Model,又被称为条件概率模型,它估计的是条件概率分布。 生成式模型 即Generative Model ,它估计的是联合概率分布,两者各有特点。 常见的判别式模型有Logistic Regression,Linear Regression,SVM,Traditional Neural Networks Nearest Neighbor,CRF等。 常见的生成式模型有Naive Bayes,Mixtures of Gaussians, HMMs,Markov Random Fields等。 而GAN,即Generative adversarial net,则同时包含判别式模型和生成式模型,如下: 判别式模型就是大家熟悉的分类任务模型

用Tensorflow实现DCGAN

早过忘川 提交于 2019-12-05 09:16:15
1. GAN简介 最近几年,深度神经网络在图像识别、语音识别以及自然语言处理方面的应用有了爆炸式的增长,并且都达到了极高的准确率,某些方面甚至超过了人类的表现。然而人类的能力远超出图像识别和语音识别的任务,像很多需要创造力的任务却是机器很难做到的。但是GAN使得机器解决这些任务成为可能。 深度学习的领军人物Yann LeCun曾经说过: 生成对抗网络(GAN)及其变种已经成为最近10年以来机器学习领域最重要的思想。 为了能更好的了解GAN,做一个比喻, 想象一下制作伪钞的犯罪嫌疑人和警察这个现实中的例子: 想要成为一名成功的假钞制作者,犯罪嫌疑人需要蒙骗得了警察,使得警察无法区分出哪一张是假钞、哪一张是真钞。 作为警察,需要尽可能高效地发现那些是假钞 整个过程被称为 对抗性过程(adversarial process) GAN是由Ian Goodfellow 于2014年提出,它是一种两个神经网络相互竞争的特殊对抗过程。第一个网络生成数据,第二个网络试图区分真实数据与第一个网络创造出来的假数据。第二个网络会生成一个在[0, 1]范围内的标量,代表数据是真是数据的概率。 2.GAN的目的 GAN是生成模型的一种,主要在模型的分布中生成样本,它只能够制造数据而不是提供一个预测的密度函数。 下面是一些学习生成模型的理由: 生成样本,这是最直接的理由。 训练并不包含最大似然估计。

TensorFlow实现GAN

非 Y 不嫁゛ 提交于 2019-12-05 09:16:01
这里的生成模型和判别模型均为多层感知机(当然也可以换为CNN或LSTM),多层感知机的层数为四层,中间有两个隐藏层。使用的数据集为mnist数据集,训练GAN之后得到的模型能达到的效果是:在生成模型中输入一个随机高斯噪声,生成模型可以输出一张和mnist数据集类似的图片。参考论文:《Generative Adversarial Nets》。 #coding=utf-8 import pickle import tensorflow as tf import numpy as np import matplotlib.gridspec as gridspec import os import shutil from scipy.misc import imsave # 定义一个mnist数据集的类 class mnistReader(): def __init__(self,mnistPath,onehot=True): self.mnistPath=mnistPath self.onehot=onehot self.batch_index=0 print ('read:',self.mnistPath) fo = open(self.mnistPath, 'rb') self.train_set,self.valid_set,self.test_set = pickle.load

想实现 DCGAN?从制作一张门票谈起!

妖精的绣舞 提交于 2019-12-05 09:12:25
生成对抗网络因为优雅的创意和优秀的性能吸引了很多研究者与开发者,本文从简洁的案例出发详解解释了 DCGAN,包括生成器的解卷积和判别器的卷积过程。此外,本文还详细说明了 DCGAN 的实现过程,是非常好的实践教程。 热身 假设你附近有个很棒的派对,你真的非常想去。但是,存在一个问题。为了参加聚会,你需要一张特价票——但是,票已经卖完了。 等等!难道这不是关于生成对抗网络(Generative Adversarial Networks)的文章吗?是的,没错。但是请先忍忍吧,这个小故事还是很值得一说的。 好的,由于派对的期望值很高,组织者聘请了一个有资质的安全机构。他们的主要目标是不允许任何人破坏派对。为了做到这一点,场地的入口安排了很多警卫,检查每个人门票的真实性。 你并没有什么武打天赋能硬闯进去。所以,唯一的途径是通过一张非常有说服力的假票瞒天过海。 不过,这个计划存在一个很大的问题——你没见过真票长什么样。 即使根据自己的创造力设计了一张票,你是不可能在第一次尝试时能骗过警卫的。此外,如果没有一张足够真实的派对假票,带着自己做的假票进门无异于自投罗网。 为了解决这个问题,你决定打电话给你的朋友 Bob 帮你点忙。 Bob 的任务非常简单。他将用你做的假票尝试混进派对中去。如果他被拒之门外,他将为你带回有关票面样式的有用提示。 基于这个反馈,你可以再试着做一张新版假票交给 Bob

生死看淡,不服就GAN(五)----用DCGAN生成MNIST手写体

◇◆丶佛笑我妖孽 提交于 2019-12-05 09:11:20
搭建DCGAN网络 #*************************************** 生死看淡,不服就GAN ************************************************************** """ PROJECT:MNIST_DCGAN Author:Ephemeroptera Date:2018-4-25 QQ:605686962 Reference:' improved_wgan_training-master': <https://github.com/igul222/improved_wgan_training> 'Zardinality/WGAN-tensorflow':<https://github.com/Zardinality/WGAN-tensorflow> 'NELSONZHAO/zhihu':<https://github.com/NELSONZHAO/zhihu> """ """ Note: in this section , we add batch-normalization-laysers in G\D to acclerate training.Additionally,we use moving average model to G to get well products from G

DCGAN in Tensorflow生成动漫人物

落爺英雄遲暮 提交于 2019-12-05 09:01:48
引自: GAN学习指南:从原理入门到制作生成Demo 生成式对抗网络(GAN)是近年来大热的深度学习模型。最近正好有空看了这方面的一些论文,跑了一个GAN的代码,于是写了这篇文章来介绍一下GAN。 本文主要分为三个部分: 介绍原始的GAN的原理 同样非常重要的DCGAN的原理 如何在Tensorflow跑DCGAN的代码,生成如题图所示的动漫头像,附送数据集哦 :-) GAN原理介绍 说到GAN第一篇要看的paper当然是Ian Goodfellow大牛的Generative Adversarial Networks(arxiv: https://arxiv.org/abs/1406.2661 ),这篇paper算是这个领域的开山之作。 GAN的基本原理其实非常简单,这里以生成图片为例进行说明。假设我们有两个网络,G(Generator)和D(Discriminator)。正如它的名字所暗示的那样,它们的功能分别是: G是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做G(z)。 D是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。 在训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D