GAN[2]:条件CGAN--指定生成结果

条件GAN(CGAN)通过附加标签信息解决GAN生成样本的随机性问题,使得生成器能根据输入标签创建特定类型的数据。训练中,G和D都使用标签向量,增加模型的指导性。本文介绍了CGAN的基本思想,展示了从简单的感知机实现到生成器逐步改进的学习过程。

Conditional Generative Adversarial Nets


前言

GAN虽然厉害,但有个问题,其生成模型生成的样本完全是随机的。也就是完全取决于输入的噪声z,根本无法预测会生成数字1还是数字2。因此有人提出了条件GAN,其思想也是很简单,就是想要生成哪个数字,你输入的时候告诉我你想要的标签即可。为了达到这个目标,在训练的时候,就要加上标签。也就是G想伪造数字1,就要在原本的z向量后面加十维的one hot向量。在D那里也是,要判别是什么,也要在尾部加上十维的one hot向量。

直观上很难解释这是为什么,但多层感知机,乃至CNN,就是有那么强大的力量,你传什么,我训练出来的结果我都不知道是为什么,就是对的!这也是神经网络被称为黑箱的原因。

介绍

具体的论文介绍等日后有再看论文再来填坑,其实真的就只是比GAN多了一个输入,即真实标签y。
这里写图片描述
如图所示,原本的GAN是没有绿色部分的,条件GAN在生成器和判别器的训练过程中都添加了绿色的y标签,即数字的one hot。公式变成下面这个
[Math Processing Error]minGmaxDEx∼pdata(x)[logD(x|y)]+Ez∼pz(z)[log(1−D(G(z|y)))]
仅仅只是多了”[Math Processing Error]|y”,差别不大。
我自己根据上一篇论文的代码稍加改造实现了一个弱智的条件GAN,但效果表现还可以。G和D基于2层感知机。

算法效果

一开始的渣渣生成器,生成下面这张图,的确就是瞎生成。
这里写图片描述

再过几轮训练,生成器被判别器调教乖了,想生成啥就生成啥,问你怕不怕。
这里写图片描述

我们来看看生成器被调教的过程。
这里写图片描述

代码

import tensorflow as
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值