生成式对抗网络是一种用于训练生成器模型的深度学习体系结构。GAN由两个模型组成,一个称为生成器(Generator),另一个称为判别器(Discriminator)。顾名思义,生成器生成新样本,判别器负责对生成的样本进行真伪分类。

GAN实际如何运作的?

判别器模型的性能用于更新生成器和判别器本身的网络权重。生成器实际上从未看到过数据,而是根据判别器的性能不断地进行调整,更具体地说,是根据从判别器传回来的误差梯度进行调整。生成器逐渐学会通过产生与真实样本完全相同的样本来欺骗判别器。

在这篇文章中,我们将选择一个简单的一维函数来直观地理解GAN。本文分为5个部分:

选择一个一维函数实现判别器模型实现生成器模型训练GAN模型性能评估1.一维函数

我们需要选择一个一维函数来制作模型。一维函数的形式为

y = f(x),其中x是输入,y是对应的输出

为简单起见,我将使用函数y = x。您可以自由选择任何函数。我们将保持输入在-0.5和+0.5之间。下面给出了一个计算输入的简单函数 :

该函数简单地接受N个随机值,并将每个值减去0.5,以便将输入范围保持在-0.5和+0.5之间。当为real时y=1,当为fake时y=0。

2.判别器模型

判别器只是一个简单的分类模型,它可以预测样本是real还是fake。判别器将两个实数值的样本作为输入,并输出样本是real还是fake。我们处理的问题非常简单,所以我们不需要非常复杂的神经网络,我们将只采用一个隐藏层,其中有25个节点。您可以自由地试验节点数或层数,以提高生成器的准确性。我们将对隐藏层使用ReLu激活,对输出层使用sigmoid激活。Python实现如下:

3.生成器模型

对于生成器,我们将噪声输入提供给生成器,此噪声输入也称为潜在变量。

潜在变量是潜在空间中的隐藏变量或未观察到的变量,潜在空间是这些变量的多维空间。

直到我们的生成器受到训练并赋予这些点意义,该潜在空间才有意义,这些点被映射到判别器的输入。我们将定义一个3维的潜在空间(可以更改维数),并实验生成器的行为和准确度如何变化。我们将对潜在空间中的每个变量使用高斯分布。生成器使用一个隐藏层,该隐藏层将由15个具有ReLu激活函数的神经元组成。输出层将由两个神经元组成,这两个神经元将连接到判别器层的输入。

4.训练GAN模型

训练GAN模型的方法有很多,最简单的方法是创建一个新的模型,该模型由生成器和判别器两部分组成。我们只是在逻辑上封装了生成器和判别器网络。我们将把GAN模型作为一个整体进行训练,这样来自判别器的反向传播误差也会更新生成器的权重。如果判别器能够很好地进行分类,那么生成器的权重将更新得更多;如果判别器不能很好地进行分类,那么生成器的权重将更新得少一些。这样,在生成器和判别器之间就形成了一种对抗关系。Python实现代码如下:

判别器模型的可训练属性被设置为false,这样就可以仅对standalone模型进行训练。

现在我们只剩下对GAN模型进行整体训练了。我们将编写一个函数来做这个的事情。该函数将运行10000个epochs,每运行2000个epochs,它将评估判别器和生成器的性能。Python实现的代码如下:

5.评估性能

在每隔一定的epochs之后,我们将调用show_performance函数,该函数将从生成器中获取真实样本和虚假样本并预测结果。我们还将在散点图上绘制结果,以便我们可以查看GAN的性能。Python实现的代码如下:

在epoch = 2000之后,我们得到了散点图如下,您的图可能会有所不同。

红点表示real点,蓝点表示生成器生成的点。我们可以看到,蓝点已开始呈y =x的形状。

如果我们继续进行10000个epochs,您将得到类似下面的图像。您可以尝试使用更多个epochs(例如15000或20000个epochs)来获得更好的准确性。

现在我们可以看到,我们已经从生成器中得到了一个更确定的样本,我们可以说生成器已经学习并拟合了这个函数。也就是说,仅仅通过误差梯度,生成器就学会了这个函数。

python开源库生成式对抗网络_Python:使用Tensorflow开发一维生成对抗网络相关推荐

  1. python开源库生成式对抗网络_神经网络结构:生成式对抗网络(GAN)

    生成对抗网络(GAN),是深度学习模型之一,2014年lan Goodfellow的开篇之作Generative Adversarial Network,GAN是一种无监督学习方法,它巧妙地利用&qu ...

  2. Python 开源库及示例代码

    Python 开源库及示例代码 更多干货 分布式实战(干货) spring cloud 实战(干货) mybatis 实战(干货) spring boot 实战(干货) React 入门实战(干货) ...

  3. 爱python的胖虾_爱了爱了!0.052 秒打开 100GB 数据,这个Python开源库火爆了!

    原标题:爱了爱了!0.052 秒打开 100GB 数据,这个Python开源库火爆了! 编译 | AI科技大本营(ID:rgznai100) 许多组织都在尝试收集和利用尽可能多的数据,以改善其经营方式 ...

  4. 人人都应该用的 Python 开源库

    本文讲的是人人都应该用的 Python 开源库, 你想问为什么?不用问,使用就好了. 好吧好吧,让我来回顾一下吧. 我爱 Python:它作为我的主要编程语言已经超过十年了,尽管在此期间有一些 有趣  ...

  5. 推荐一款Python开源库,技术人必备的造数据神器!

    1. 背景 在软件需求.开发.测试过程中,有时候需要使用一些测试数据,针对这种情况,我们一般要么使用已有的系统数据,要么需要手动制造一些数据.由于现在的业务系统数据多种多样,千变万化.在手动制造数据的 ...

  6. python开源库推荐_推荐5个值得关注的Python开源项目

    原标题:推荐5个值得关注的Python开源项目 今天小编看到了五个开源项目,觉得还错,推荐给大家. 1.Wagtail CMS Wagtail是一个基于Django的CMS系统 它拥有优质的用户体验 ...

  7. python标准库有多强大_Python标准库——走马观花

    原文:Python标准库--走马观花 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python的一大好处在于它有一套很有用的标 ...

  8. 用于安装python第三方库的工具是_Python第三方库安装

    Python有一个全球社区:在这里,我们可以搜索Python第三方库的任何话题.PyPI的全称是Python包指数指Python包的指数.它是由PSF (Python软件基金会)和显示全球Python ...

  9. 如何检查python的库是否安装成功_Python——查看安装位置和安装的库

    查看Python 安装位置和安装的库 步骤一: 1. Start 一个command prompt 2. 找到电脑中已经安装的Python 位置: where python 1 打开路径, cd 到输 ...

最新文章

  1. 顽强的病毒,如何处理
  2. C++实现字符串和整数之间的相互转换
  3. 知识图谱学习笔记-非结构化数据处理
  4. 多图 | 4人4天攻占10国榜首,只因有此神器……(文末高能预警)
  5. windows自带的压缩,解压缩命令
  6. Hbase1.2数据导入2.0
  7. linux下文件删除的原理精华讲解(考试题答案系列)
  8. 20145205 《信息安全系统设计基础》第1周学习总结
  9. 安卓手机显示没有网络连接到服务器,安卓手机 总是提示登录网络
  10. Attention-Based Aggregation GraphNetworks for Knowledge GraphInformation Transfer
  11. MIT线性代数笔记二十八讲 相似矩阵和若尔当标准型
  12. win8 计算机组策略,win8打开组策略提示“无法找到组策略”的原因及解决措施
  13. Excel格式的SNP数据怎么变为plink格式
  14. Codeforces Round 863 B Kayaking 贪心
  15. siri中文语音助理_针对“语音助手”类产品,浅谈对话式交互设计
  16. 数据结构与算法36-联接最大数
  17. 飞塔防火墙命令行终端修改输出长度
  18. GroovyGrails
  19. 2023最新英皇CMS影视采集系统搭建程序源码+支持一键安装/功能强大
  20. 【Web技术】网站留言系统开发,及留言信息实时发送至指定邮箱

热门文章

  1. 52.4. APC Cache (php-apc - APC (Alternative PHP Cache) module for PHP 5)
  2. 在思科无线控制器上查看5GHz和2.4GHz的客户端数量
  3. [LeetCode]题解(python):058-Length of Last Word
  4. 从servlet中获取spring的WebApplicationContext
  5. 基于Linux的虚拟主机搭建
  6. 机器学习——深度学习之数据库和自编码器
  7. mysql cmake错误_MySQL5.5安装出现CMake错误找不到CMakelists.txt原因-阿里云开发者社区...
  8. python反爬虫破解_python中绕过反爬虫的方法总结
  9. mongodb备份oplog_MongoDB 备份(mongodump)与恢复(mongorestore)
  10. 数据结构无头结点单向不循环链表(C语言版)