slice_input_producer在2.0版本里怎么用_用Gan生成一维数据(附代码)

引言

之前在知乎上问过一个关于使用对抗生成网络(Generative Adversarial Network)生成一维数据的问题。最近老是有人问代码的问题,网上关于图片的很多,一维数据的也有,但是比较少。对于一些小伙伴来说,可能懒得去找了,我就当个搬运工吧。之前也做过一点类似的东西,和大家分享一下。

https://zh.wikipedia.org/zh-hans/%E7%94%9F%E6%88%90%E5%AF%B9%E6%8A%97%E7%BD%91%E7%BB%9C​zh.wikipedia.org

对抗生成网络

废话不多说,先上那个公式,

G代表生成器,D代表判别器,

是真实数据分布,
是假的数据分布(一般是噪声)。
表示真实样本和生成样本的差异程度。G和D是模型,比如说两个神经网络。
说的是固定G最大化真实样本和生成样本的差异程度。
说的是固定D最小化真实样本和生成样本的差异程度。当然,真实样本和生成样本的差异程度其实就是指的是分类准确率。那么,D就是个二分类器,G可以理解为包装器,假的样本经过G后再去D里面判别,真的样本不经过包装直接去D里面判别。如果让D输出都是一个数的话,D希望真实样本和错误样本输出的两个数不一样,相差越大越好。G希望两个数一样。
陈诚:通俗理解生成对抗网络GAN​zhuanlan.zhihu.com
ce99c444d095db408a2d6542ddba54b1.png

那D和G的损失是什么?

首先,公式(1)

是D大于0的,给真实数据打标签
,假的数据打标签为
。使用分类常用的交叉熵,

yp是判别器输出,yr是判别器输入标签,所以D的损失函数为

对G来说,想让D误判,所以有

, 不考虑真实样本,因为真实样本不经过生成器,只拿来做参考的。所以G损失为,

注意此时噪声标签换了。

代码

供参考,加载数据即可使用。

starhou/One-dimensional-GAN​github.com
acf53cbf8ccbf645245aa08cb7d8529f.png
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值