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

生成式对抗网络是一种用于训练生成器模型的深度学习体系结构。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)来获得更好的准确性。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266041.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java执行存储过程

1、JDBC调用存储过程: CallableStatement /** *p是要调用的存储过程的名字,存储过程的4个参数,用4个?号占位符代替 *其余地方写法固定 */ CallableStatement cstmt conn.prepareCall("{call p(?,?,?,?)}"); /** *告诉JDBC&…

2014 计算机网络 考研真题,2014计算机网络考研试题过关必练

2009全国硕士研究生入学考试过关必练_网络试题一. 通过选择题过关必练1. 常用的数据传输速率单位有Kbps、Mbps、Gbps与Tbps,1Mbps等于A. 1103bps B. 1106bps C. 1109bps D. 11012bps2. 常用的数据传输速率单位有Kbps、Mbps、Gbps,如果局域网的…

安卓APP_ 控件(9)—— PopupWindow弹窗

摘自:安卓APP_ 控件(9)—— PopupWindow弹窗 作者:丶PURSUING 发布时间: 2021-04-05 14:41:35 网址:https://blog.csdn.net/weixin_44742824/article/details/115405555 实现效果如下: 点击触发…

mysql5.6主从参数详解

mysql5.6的主从相当的不错,增加了不少参数,提升了主从同步的安全和效率,以下是mysql5.6主从参数详解。######################################### server_id 2 #binlog log-bin /data1/mysql/binlog/binlog binlog_format ROW binlog-row…

3D 立体 backface-visibility

<!DOCTYPE html> <html><head><!--backface-visibility属性用来设置&#xff0c;是否显示元素的背面&#xff0c;默认是显示的backface-visibility:keyword;keyword有两个值&#xff0c;hidden和visible&#xff0c;默认是是visible所以是在每个元素里面设…

计算机网址登录教程,melogincn电脑登录教程

请问melogincn使用电脑登录设置的教程&#xff1f;在电脑上怎么登陆水星(美科星)无线路由器的后台&#xff0c;通过melogincn&#xff0c;试了下发现不知道如何打开&#xff0c;求分享用melogincn用电脑登录设置的教程。使用环境描述&#xff1a;melogincn实际上应该是melogin.…

从外网给新建的Exchange 2007/2010分发通讯组发邮件失败

前几天部署Exchange2010时建立了几个通讯组邮箱&#xff0c;测试下来发现只有exchange内部组员进行邮件交流没有问题&#xff0c;外网发送到组邮箱时会收到#550 5.7.1 RESOLVER.RST.AuthRequired; authentication required ##的错误&#xff0c;当时没有找出问题原因&#xff0…

Qt 中事件与处理

一、事件与处理 程序在运算过程中发生的一些事情&#xff1a;鼠标单击、键盘的按下... 这些的事件的监控与处理在Qt中不是以信号的方式处理的。 当这些事件发生时会调用QObject类中的功能函数&#xff08;虚函数&#xff09;&#xff0c;所有的控件类都继承了这个类。 常用的鼠…

安卓APP_ 布局(1)—— LinearLayout

摘自&#xff1a;安卓APP_ 布局&#xff08;1&#xff09;—— LinearLayout 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-04-05 16:46:22 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/115442240 LinearLatout 一、orientation&#xf…

鼠标点击测试_鼠标键盘如何检测故障,这边教您简单的测试

沉迷&#xff0c;教您简单的测试鼠标故障。有线键盘和鼠标的检测步骤&#xff1a;(1)将电脑关机&#xff0c;拔插对应的连接线。(2)移除所有除了键盘和鼠标之外的设备&#xff0c;然后重启电脑。(3)重启后&#xff0c;观察鼠标的灯是否有亮。点击滚动锁定键&#xff0c;观察键盘…

影响计算机的速度有哪些,影响电脑速度的硬件有哪些

影响电脑速度的硬件有哪些?影响最直接的是cpu、内存条、硬盘。其次是主板、显卡。一、处理器cpucpu是电脑的大脑&#xff0c;是运算核心和控制核心&#xff0c;它的主要作用是处理指令和数据&#xff0c;电脑所有的硬件工作分工都市cpu分配和协调的。所以&#xff0c;cpu的层次…

自学笔记:计时器Chronometer

public class MainActivity extends Activity implements OnClickListener {/*** 待完善*/private Chronometer chronometer null;private long temp;private boolean isrestart;Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceSta…

atom编写python程序_编写我们的第一个Python程序,print.py

Python安装后&#xff0c;默认会安装很多功能模块&#xff0c;方便开发应用程序时调用&#xff0c;需要增加默认功能模块以外的模块时&#xff0c;使用的是PIP 这个工具&#xff0c;把需要模块安装到C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\Lib\sit…

安卓APP_ 布局(2) —— RelativeLayout相对布局

摘自&#xff1a;安卓APP_ 布局&#xff08;2) —— RelativeLayout相对布局 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-04-05 20:19:54 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/115445242 RelativeLayout 一、根据父容器定位二、…

mutli-lane情况

PCIE3.0支持x1,x2,x4,x8,x16,x32 Lane widths. 在多条Lane情况下&#xff0c;有2类symbol framing&#xff0c;一类包含Ordered Sets&#xff0c;一类是TLP和DLLP。 Ordered Sets会同时在每条Lane上传输&#xff0c;所以每条Lane都会有完整的OS. 对于TLP/DLLP来说&#xff0c;S…

win10英雄联盟登录服务器未响应,win10系统英雄联盟登陆不上的解决方法

很多小伙伴都遇到过win10系统英雄联盟登陆不上的情况&#xff0c;想必大家都遇到过win10系统英雄联盟登陆不上的情况吧&#xff0c;那么应该怎么处理win10系统英雄联盟登陆不上呢&#xff1f;我们依照1、尝试打开网页或登录QQ查看是否正常能打开/登录&#xff0c;如果可以打开可…

玩转SSRS第六篇---客户端报表进阶

上一篇介绍了客户端报表的基本开发。此篇讲介绍如何给客户端报表自定义开发数据源。 通过上一篇我们知道可以通过Dataset的方式给报表添加数据源&#xff0c;这种方式通过UI操作的方式相对来说比较简单。此外我们也可以通过其它方式为客户端报表提供数据源&#xff0c;使数据的…

安卓APP_ 布局(3) —— FrameLayout帧布局

摘自&#xff1a;安卓APP_ 布局&#xff08;3) —— FrameLayout帧布局 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-04-05 20:41:02 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/115447658 帧布局的机制 从左上角开始绘制。 若有重叠&…

wpf page 界面渲染完成后执行自动操作_Vue项目骨架屏自动生成方案(dps)

什么是骨架屏什么是骨架屏呢&#xff1f;骨架屏(Skeleton Screen)是指在页面数据加载完成前&#xff0c;先给用户展示出页面的大致结构&#xff08;灰色占位图&#xff09;&#xff0c;在拿到接口数据后渲染出实际页面内容然后替换掉。Skeleton Screen 是近两年开始流行的加载控…

js等待当前线程内ajax完成,理解javascript定时器中的单线程

一、JavaScript 引擎是单线程的可以从下面的代码中看到&#xff0c;第一个用setTimeout中的代码是死循环&#xff0c;由于是单线程&#xff0c;下面的两个定时器就没机会执行了。setTimeout( function(){ while(true){} } , 100);setTimeout( function(){ alert(你好!setTimeou…