《深度学习》课件3.pptx

上传人(卖家):momomo 文档编号:7671635 上传时间:2024-06-27 格式:PPTX 页数:45 大小:1.52MB
下载 相关 举报
《深度学习》课件3.pptx_第1页
第1页 / 共45页
《深度学习》课件3.pptx_第2页
第2页 / 共45页
《深度学习》课件3.pptx_第3页
第3页 / 共45页
《深度学习》课件3.pptx_第4页
第4页 / 共45页
《深度学习》课件3.pptx_第5页
第5页 / 共45页
点击查看更多>>
资源描述

1、人脑是一个神奇的世界。它可以让我们认识许多东西,并在认人脑是一个神奇的世界。它可以让我们认识许多东西,并在认识这些东西以后得到很好的泛化能力。就好像我们认识了一个识这些东西以后得到很好的泛化能力。就好像我们认识了一个白猫以后,就能认识其他大大小小,颜色不同的猫一样。或者白猫以后,就能认识其他大大小小,颜色不同的猫一样。或者当我们遇到某些需要做决定的事情时,我们总能根据经验和实当我们遇到某些需要做决定的事情时,我们总能根据经验和实际情况做出一个合乎常理的决策。既然人脑的功能如此强大又际情况做出一个合乎常理的决策。既然人脑的功能如此强大又如此聪慧,那么我们能不能让计算机模仿大脑,从而让它也变如此聪

2、慧,那么我们能不能让计算机模仿大脑,从而让它也变得更加智能呢得更加智能呢?本章简介本章简介3-1 3-1 人脑是如何学习的人脑是如何学习的据估计,人类大脑拥有据估计,人类大脑拥有10001000亿个神经细胞,如果把它们排成一条直线,亿个神经细胞,如果把它们排成一条直线,长度将达到长度将达到10001000公里。大脑是由许多神经元联结而成的巨大网络,如公里。大脑是由许多神经元联结而成的巨大网络,如图图3-13-1所示所示。图图3-1 3-1 人脑神经网络示意图人脑神经网络示意图神经元的树突接收外界感官信息,当神经元的树突接收外界感官信息,当神经元被激活时,神经元通过细胞轴神经元被激活时,神经元通

3、过细胞轴突将信息传导到其他神经元,下一个突将信息传导到其他神经元,下一个神经元的树突继续用来接收其他神经神经元的树突继续用来接收其他神经元的输入信号,以此类推。元的输入信号,以此类推。神经元被激活有一种很特殊的性质:当神经元被刺激的强度未达到神经元被激活有一种很特殊的性质:当神经元被刺激的强度未达到某一阈值时,神经冲动不会发生;而当刺激强度达到或超过某一阈某一阈值时,神经冲动不会发生;而当刺激强度达到或超过某一阈值时,神经冲动能够发生并达到最大强度。此后刺激的强度即使再值时,神经冲动能够发生并达到最大强度。此后刺激的强度即使再持续加强或减弱,已诱发的冲动强度也不再发生变化持续加强或减弱,已诱发

4、的冲动强度也不再发生变化。图。图3-23-2给出给出了一个简单的神经元结构。了一个简单的神经元结构。图图3-2 3-2 神经元的构成神经元的构成举个现实生活中的例子举个现实生活中的例子例如,听说当年的老同学们打算举办一个聚会。你想念当年的老同学,例如,听说当年的老同学们打算举办一个聚会。你想念当年的老同学,正考虑是否去参加。或许会通过如下三个因素设置权重来作出决定。正考虑是否去参加。或许会通过如下三个因素设置权重来作出决定。1.1.天气好吗?天气好吗?2.2.你的前男朋友或者前女朋友会不会出现?你的前男朋友或者前女朋友会不会出现?3.3.这个聚会举办的地点是否便于前往?这个聚会举办的地点是否便

5、于前往?我们可以把天气好设为我们可以把天气好设为1,不好为,不好为0;前任出现;前任出现设为设为-1,不出现设为,不出现设为0;聚会地点交通方便设;聚会地点交通方便设为为1,不方便设为,不方便设为0。我。我们的大脑就会做出相应们的大脑就会做出相应判断,也就判断,也就是神是神经元的树突会受到刺激,并且经元的树突会受到刺激,并且把相应的信息传递给其它神经元,使我们做出把相应的信息传递给其它神经元,使我们做出最终的判断,如图最终的判断,如图3-3所示。所示。图图3 3-3-3 神经元处理信息示意图神经元处理信息示意图jjDecidew x(3-13-1)式式3-13-1,当当DecideDecide

6、数值超过一定值以后,就做出去参加聚会的打算,数值超过一定值以后,就做出去参加聚会的打算,这个值就称为阈这个值就称为阈值值。对应神经元的特性来讲,就是当神经元的刺激对应神经元的特性来讲,就是当神经元的刺激强度达到或超过某一阈值时,神经冲动才能够发生,如图强度达到或超过某一阈值时,神经冲动才能够发生,如图3-43-4所示。所示。图图3-4 3-4 神经元处理不同权重信息示意图神经元处理不同权重信息示意图3-2 3-2 模仿人脑模仿人脑神经元(感知器神经元(感知器)图图3 3-5-5 感知器感知器一个庞大的神经网络是由众多神经元构成的。如果想要构造一个符一个庞大的神经网络是由众多神经元构成的。如果想

7、要构造一个符合要求的大规模神经网络,就必须要从单个神经元入手合要求的大规模神经网络,就必须要从单个神经元入手。种被称种被称为为“感知器感知器”的人工神经元在的人工神经元在20 20 世纪五、六世纪五、六年代由科学家年代由科学家Frank Frank Rosenblatt Rosenblatt 发明出来。发明出来。对应我们上一节所讲的实际问题对应我们上一节所讲的实际问题,神经网络的输出,由分配权重后神经网络的输出,由分配权重后的总和来决定,当这个数值大于或小于某个阈值的时候,我们就会的总和来决定,当这个数值大于或小于某个阈值的时候,我们就会做出去参加还是不参加聚会的决定。假设我们去参加聚会的情况

8、用做出去参加还是不参加聚会的决定。假设我们去参加聚会的情况用数字数字1 1来表示,不去的情况则用来表示,不去的情况则用0 0来表示,那么感知器的工作方法可来表示,那么感知器的工作方法可以用代数形式去表示以用代数形式去表示:10jjjjw xthresholdOutputw xthreshold(3-23-2)这就是一个感知器的基本表示。我们可以根据上述的数学模型,认这就是一个感知器的基本表示。我们可以根据上述的数学模型,认为感知器是一个根据输入与权重来做出决定的设备。为感知器是一个根据输入与权重来做出决定的设备。图图3 3-6-6 感知器网络感知器网络这个例这个例说明了一个感知器如何能权衡不同

9、的依据来进行决策。如说明了一个感知器如何能权衡不同的依据来进行决策。如果遇到更加复杂的问题,我们可以增加感知器网络的复杂程度,以果遇到更加复杂的问题,我们可以增加感知器网络的复杂程度,以增加它的处理能力,如图增加它的处理能力,如图3-63-6所示。所示。inputinput是输入数据。第一列的三个神是输入数据。第一列的三个神经元被称为第一层感知器,分别对应经元被称为第一层感知器,分别对应天气、人员和交通这三天气、人员和交通这三个因个因素。而第素。而第二层的感知器是在权衡上一层的决策二层的感知器是在权衡上一层的决策结果并做出决定结果并做出决定。第。第三层中的感知器三层中的感知器能进行更加复杂的决

10、策。图能进行更加复杂的决策。图3-63-6中第中第三层感知器只有一个神经元,代表输三层感知器只有一个神经元,代表输出出outputoutput。以这种方式,一个多层的。以这种方式,一个多层的感知器网络就可以从事复杂巧妙的决感知器网络就可以从事复杂巧妙的决策。策。一个复杂网络拥有众多感知器,我们不可能依次去设定阈值(人为一个复杂网络拥有众多感知器,我们不可能依次去设定阈值(人为设定阈值也存在不确定性)。同时,神经网络本身也可能存在误差。设定阈值也存在不确定性)。同时,神经网络本身也可能存在误差。因此,我们不妨将阈值左移:因此,我们不妨将阈值左移:jjwxthreshold可以整理为:可以整理为:

11、(3-33-3)jjw xb(3-43-4)我们也可以利用向量点积的形式来代替我们也可以利用向量点积的形式来代替jjw x1000w xbOutputw xb(3-53-5)B称为偏置(称为偏置(Bias),式),式3-5为感知器的一般表达式。为感知器的一般表达式。3-3 3-3 非线性神经元非线性神经元复杂的数学模型很多是非线性的。众多线性模型的叠加无法很复杂的数学模型很多是非线性的。众多线性模型的叠加无法很好地拟合非线性部分,如图好地拟合非线性部分,如图3-73-7所示。所示。为了解决上述问题,我们引入激活函数(为了解决上述问题,我们引入激活函数(Activation FunctionsA

12、ctivation Functions)。)。激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。何非线性函数,这样神经网络就可以应用到众多的非线性模型中。图图3-7 3-7 线性不可分(左)与线性可分(右)样本线性不可分(左)与线性可分(右)样本如何引入激活函数呢?我们通常将激活函数与线性神经元合并在一如何引入激活函数呢?我们通常将激活函数与线性神经元合并在一起使之成为非线性神经元,其原理如图起使之成为非线性神经元,其原理如图3-83-8所示。所示。图图3-8 3-8

13、 非线性神经元原理非线性神经元原理()wxb下面介绍几种典型的激活函数下面介绍几种典型的激活函数 Sigmoid函数函数表达式函数表达式:函数图像函数图像:特点:特点:它能够把输入的连续实值变换为它能够把输入的连续实值变换为0 0和和1 1之间的输出。特别的之间的输出。特别的,如果输入是非常大的负数,那么输出就是,如果输入是非常大的负数,那么输出就是0 0;如果输入是非常;如果输入是非常大的正数,输出就是大的正数,输出就是1 1。(3-73-7)1()1zze图图3-9 Sigmoid3-9 Sigmoid函数函数将上将上述的表达式带入述的表达式带入sigmoidsigmoid函数,得到函数,

14、得到可以看出可以看出:这样看来它似乎还是一个感知机,只不过是将数据压缩进这样看来它似乎还是一个感知机,只不过是将数据压缩进0,10,1范围内。当在范围内。当在0,10,1之间的时候与线性神经元有所偏离,其原因之间的时候与线性神经元有所偏离,其原因就是引入了非线性。就是引入了非线性。(3-93-9)1()1wx bze(3-83-8)()0()1zzzeze Tanh函数函数表达式函数表达式:函数图像函数图像:性质:性质:引入引入TanhTanh非线性函数后,曲线关于坐标轴奇对非线性函数后,曲线关于坐标轴奇对称称。(3-103-10)图图3-10 3-10 TanhTanh函函数数zzzzeee

15、ez)tanh(ReLu 函数函数表达式函数表达式:函数图像函数图像:性质:性质:ReLUReLU函数其实就是一个取最大值函数,但是这并不是全区函数其实就是一个取最大值函数,但是这并不是全区间可导的。由于只需要判断输入是否大于间可导的。由于只需要判断输入是否大于0 0,所以计算速度非常,所以计算速度非常快,收敛速度远快于快,收敛速度远快于sigmoidsigmoid和和tanhtanh函数。函数。ReLuReLu是目前常用的激是目前常用的激活函数。活函数。(3-113-11)图图3-11 3-11 ReLuReLu函数函数Remax(0,)lux3-4 3-4 神经网络架构神经网络架构在了解了

16、单个神经元(感知器)和非线性激活函数后,现在可以在了解了单个神经元(感知器)和非线性激活函数后,现在可以考虑组建较为复杂的神经网络了。本节先介绍一些神经网络的术考虑组建较为复杂的神经网络了。本节先介绍一些神经网络的术语。语。如图如图3-123-12所示,假设我们获得了这样一个神经网络:所示,假设我们获得了这样一个神经网络:图图3-12 3-12 神经网络基本构造神经网络基本构造这个这个网络网络中最左边的称为中最左边的称为输入层输入层(Input Input LayerLayer),其中的神经元称为输入神经元,),其中的神经元称为输入神经元,原始数据由该层输入到神经网络进行后续处原始数据由该层输

17、入到神经网络进行后续处理。最右边的为理。最右边的为输出层输出层(Output LayerOutput Layer),),包含有输出神经元,该输出层是神经网络对包含有输出神经元,该输出层是神经网络对样本处理后的最终结果,例如分类结果样本处理后的最终结果,例如分类结果。在在输入层和输出层之间的是中间层,也被称为输入层和输出层之间的是中间层,也被称为隐藏层或隐含层隐藏层或隐含层(Hidden Hidden LayerLayer)。)。设计网络的输入、输出层通常是比较简单、直接的。设计网络的输入、输出层通常是比较简单、直接的。例如例如,我,我们知道了一朵花的花萼长度、宽度,花瓣的长度、宽度们知道了一朵

18、花的花萼长度、宽度,花瓣的长度、宽度,尝尝试利用这四个特征来确定它是哪一种花试利用这四个特征来确定它是哪一种花。一朵花的四个特征一朵花的四个特征,需,需要要4 4个输入神经元,每个数值代表花朵一种特征的个输入神经元,每个数值代表花朵一种特征的具体数值具体数值。当输出层为一个神经元时,可以根据输出的数字确定花朵的当输出层为一个神经元时,可以根据输出的数字确定花朵的类型。如果输出层是多个神经元,我们可以使用每一个输出神经元代表类型。如果输出层是多个神经元,我们可以使用每一个输出神经元代表一种类型的花,这种方法被称为一种类型的花,这种方法被称为one-hotone-hot。图图3-13 3-13 O

19、ne-hot One-hot 编码示意图编码示意图One-hotOne-hot是一种常用的输出层编码是一种常用的输出层编码方法。例如,我们一共有三种花,方法。例如,我们一共有三种花,则则网络网络的输出层包含有的输出层包含有3 3个神经元,个神经元,如图如图3-133-13所示。所示。3-5 3-5 梯度下降梯度下降我们希望寻找到一个算法,能够自动地调整神经网络的权重和偏置,我们希望寻找到一个算法,能够自动地调整神经网络的权重和偏置,让网络的输让网络的输出出y(x)y(x)能够拟合所有的训练输能够拟合所有的训练输入入x x。但是如何衡量希望但是如何衡量希望输出与实际输出之间的偏差呢?为此引入输出

20、与实际输出之间的偏差呢?为此引入代价函数代价函数(Cost Cost FunctionFunction)的概念,也叫)的概念,也叫损失函数损失函数(Loss FunctionLoss Function)或)或目标函数目标函数。定义如下的代价函数,也被称为二次代价函数:定义如下的代价函数,也被称为二次代价函数:3.5.1 3.5.1 代价函数代价函数21(,)()2xC w by xan(3-123-12)其中其中,w w为为网络中的权重网络中的权重,b b为为网络中的偏置网络中的偏置,n n是是训练输入数据的训练输入数据的个数个数,y(xy(x)表表示目标输出示目标输出,a a代代表当输入表当

21、输入为为x x时时网络的实际输出网络的实际输出。我们把式(我们把式(3-123-12)称为二次代价函数,也被称为)称为二次代价函数,也被称为均方误差均方误差或者或者MSEMSE。代价函数具有如下性质:代价函数具有如下性质:非负性;非负性;所比较的两个函数数值越接近,代价函数值就越小(最小所比较的两个函数数值越接近,代价函数值就越小(最小化)。化)。那么为什么要引入代价函数呢?直接最大化正确分类的数量不是更那么为什么要引入代价函数呢?直接最大化正确分类的数量不是更好吗,何必去最小化好吗,何必去最小化个代价函数这样的间接评估量呢个代价函数这样的间接评估量呢?在在神经网络中,通过调整权重和偏置直接进

22、行正确分类的函数神经网络中,通过调整权重和偏置直接进行正确分类的函数并不是并不是个平滑的函数,也就是说对权重和偏置做出微小的变动不个平滑的函数,也就是说对权重和偏置做出微小的变动不会直接影响正确分类的数量。而用一个平滑的代价函数效果会更明会直接影响正确分类的数量。而用一个平滑的代价函数效果会更明显显。代价函代价函数数C(C(w,bw,b)是由是由w w,b b这两个变量决定的,如图这两个变量决定的,如图3-143-14所示。我们所示。我们的目的是找到它的全局最小值。通常代价函数是的目的是找到它的全局最小值。通常代价函数是个复杂的多元函个复杂的多元函数,只通过简单观察或计算很难直接找到最小值。数

23、,只通过简单观察或计算很难直接找到最小值。3.5.2 3.5.2 梯度下降梯度下降图图3-14 3-14 C(C(w,bw,b)示示意图意图神经神经网络网络可能依赖大量的权重和偏置,可能依赖大量的权重和偏置,极其复杂极其复杂。把把代价函数看做是一个山脉,代价函数看做是一个山脉,包含有海拔高度(势能)不同的山峰和包含有海拔高度(势能)不同的山峰和山谷,而把某一时刻求得的函数值看作山谷,而把某一时刻求得的函数值看作是一个可以跳动的是一个可以跳动的“皮球皮球”。我们让这。我们让这个球体不断地在山脉中跳动,而随着它个球体不断地在山脉中跳动,而随着它的跳动势能会逐渐下降,直到它跳落到的跳动势能会逐渐下降

24、,直到它跳落到整个山脉中海拔最低的谷底(全局最小整个山脉中海拔最低的谷底(全局最小值)。值)。那么如何用数学形式来抽象出那么如何用数学形式来抽象出“球体球体”不断跳落的过程呢?其实就是让不断跳落的过程呢?其实就是让函数值逐渐减少,也就是函数的变化值始终为负即可:函数值逐渐减少,也就是函数的变化值始终为负即可:结合二次代价函数的定义公式(结合二次代价函数的定义公式(3-12),得到),得到(3-133-13)(3-143-14)(3-153-15)0CCCCwbwb(,)Tw b 根据梯度的定义根据梯度的定义:,TCCCwb(3-163-16)利用式(利用式(3-15)和式()和式(3-16),

25、式(),式(3-14)可被重写为)可被重写为:带入式(带入式(3-17)可得)可得(3-173-17)(3-183-18)(3-193-19)(3-203-20)CC C 2CC C 这就是我们希望得到的规则。通过式(这就是我们希望得到的规则。通过式(3-21),可以持续减),可以持续减小小C值直值直到获得到获得个全局最小值。个全局最小值。(3-213-21)C 图图3-15 3-15 梯度下降梯度下降示示意图意图由式(由式(3-15)和式()和式(3-21)得到了如下所示的权重和偏置这两个参数)得到了如下所示的权重和偏置这两个参数的更新方法:的更新方法:(3-223-22)在神经网络中,代价

26、函在神经网络中,代价函数数C C是是个关于所有权重和偏置的多元函数,个关于所有权重和偏置的多元函数,因此是在因此是在个高维空间定义了个高维空间定义了个超平面。而当面临有多极值函数个超平面。而当面临有多极值函数时,梯度下降法可能会陷入局部最优而非全局最优时,梯度下降法可能会陷入局部最优而非全局最优。(3-233-23)CwwwCbbb3-3-6 6 反向传播反向传播BPBP在前一节介绍了参数的更新原理,通过梯度下降法可以更新神经网络的在前一节介绍了参数的更新原理,通过梯度下降法可以更新神经网络的参数。那么对于拥有多层的复杂神经网络,它是如何更新每一层的参数参数。那么对于拥有多层的复杂神经网络,它

27、是如何更新每一层的参数呢?实际上是通过呢?实际上是通过反向传播反向传播(Back PropagationBack Propagation,BPBP)算法来解决的)算法来解决的。当我们使用前馈神经网络接收输当我们使用前馈神经网络接收输入入x并产生输并产生输出出y(x)时,信息是通过网络时,信息是通过网络由输入顺次向输出流动。输由输入顺次向输出流动。输入入x提供初始信息,然后传播到每一层的隐提供初始信息,然后传播到每一层的隐藏单元藏单元,最终,最终产生输产生输出出y(x)。这这就是就是前向传播前向传播(ForwardPropagation)。)。在训练过程中,前向传播可以持续地向前直到产生一个代价

28、函在训练过程中,前向传播可以持续地向前直到产生一个代价函数数。与此相反,反向传播(与此相反,反向传播(BP)算法允许代价函数的信息通过网络由输出)算法允许代价函数的信息通过网络由输出向输入方向进行反向流动,以此来计算梯度。向输入方向进行反向流动,以此来计算梯度。3.6.1 3.6.1 多层神经网络的数学表示多层神经网络的数学表示,lj kw图图3-16 3-16 神经网络参数神经网络参数A A图图3-17 3-17 神经网络参数神经网络参数B B这样,前面讨论过的式(这样,前面讨论过的式(3-6)就可以改写为)就可以改写为在前向传播中,前一层神经网络的激活值将作为下一层神经元的输在前向传播中,

29、前一层神经网络的激活值将作为下一层神经元的输入。用向量的方式简化上式:入。用向量的方式简化上式:令令(3-243-24)(3-253-25)(3-263-26)得到得到(3-273-27)1,lllljj kkjkaw ab1llllawab1,lllkjj kkjkzw ab1llllzw ab因此,代价函数表达式可以写成因此,代价函数表达式可以写成212NjjjCya(3-283-28)其中其中,N N为为神经网络的总层数。神经网络的总层数。3.6.2 3.6.2 反向传播算法原理反向传播算法原理1llllzw ab llaz反向传播算法的四个重要的基本公反向传播算法的四个重要的基本公式式

30、:我我们通过代价函数一步步地调整每一层的参数,最终达到使代价函数达们通过代价函数一步步地调整每一层的参数,最终达到使代价函数达到最小的目的。值得注意的是,当某一个参数发生变化后,它后面许多到最小的目的。值得注意的是,当某一个参数发生变化后,它后面许多的参数也会随之变化。通过展开一个权重的偏微分可以理解这个现象:的参数也会随之变化。通过展开一个权重的偏微分可以理解这个现象:1112,.llNNqjmnlNNNllj kmnpjj kaaCCaawaaaaw(3-293-29)3-3-7 7 实现简单神经网络实现简单神经网络我们利用以我们利用以TensorFlowTensorFlow作为基础的作为

31、基础的KerasKeras框架来实现一个简单的神经网框架来实现一个简单的神经网络。在这个示例中,鸢尾花的数据集如图络。在这个示例中,鸢尾花的数据集如图3-183-18所所示。示。鸢尾花数据集由鸢尾花数据集由150150个样本构成,个样本构成,共有三种鸢尾花。每一条样本记共有三种鸢尾花。每一条样本记录了花萼的长度、宽度,花瓣的录了花萼的长度、宽度,花瓣的长度、宽度。在使用之前,我们长度、宽度。在使用之前,我们可以把三种鸢尾花中的可以把三种鸢尾花中的“setosasetosa”类标记为类标记为0 0,“versicolorversicolor”标标记为记为1 1,“virginicavirgini

32、ca”类标记为类标记为2 2。图图3-18 3-18 鸢尾花数据集鸢尾花数据集现在构建神经网络。现在构建神经网络。#导入全部所需要的导入全部所需要的库库import numpy as npimport pandas as pdfrom keras import optimizersfrom keras.models import Sequentialfrom keras.layers import Densefrom keras.wrappers.scikit_learn import KerasClassifierfrom keras.utils import np_utilsfrom sk

33、learn.model_selection import train_test_split,cross_val_scorefrom sklearn.preprocessing import LabelEncoderfrom keras.layers.core import Dense,Activation#导入数据文件导入数据文件iris.csv(鸢尾花数据集可以通过本书作者或者从百度文(鸢尾花数据集可以通过本书作者或者从百度文库等获取)。读取路径在库等获取)。读取路径在Windows环境下建议使用双斜杠。假设数据文环境下建议使用双斜杠。假设数据文件保存在了计算机件保存在了计算机D盘的盘的DL

34、sample文件夹内。文件夹内。dataframe=pd.read_csv(D:DLsampleiris.csv,header=None)#读取指定文件中的数据读取指定文件中的数据dataset=dataframe.values#读取指定文件中的第读取指定文件中的第0列至第列至第4列列X=dataset:,0:4.astype(float)#指定第指定第4列为标签列为标签Y=dataset:,4#将标签转化为将标签转化为one-hot形式形式encoder=LabelEncoder()encoded_Y=encoder.fit_transform(Y)dummy_y=np_utils.to_c

35、ategorical(encoded_Y,3)#共三类,因此参数设为共三类,因此参数设为3,即用三个神经元代表三种不同类型的花,即用三个神经元代表三种不同类型的花#显示读取的数据以及转化后的标签显示读取的数据以及转化后的标签print(X)print(dummy_y)#构建模型构建模型model=Sequential()#全连接层,全连接层,4维输入,神经元个数为维输入,神经元个数为10,激活函数为,激活函数为ReLu,首层必须声首层必须声明输入的维数明输入的维数model.add(Dense(input_dim=4,units=10,activation=relu)model.add(Den

36、se(units=5,activation=relu)#定义输出层,由于采用定义输出层,由于采用one-hot形式,因此对应着三种类型,输出层采形式,因此对应着三种类型,输出层采用用3个神经元个神经元model.add(Dense(output_dim=3,activation=softmax)#编译模型编译模型pile(loss=mean_squared_error,#定义损失函数为均方差 optimizer=rmsprop,#定义优化器 metrics=accuracy)#定义评估方式为显示识别率#显示模型显示模型model.summary()#训练模型训练模型#X为输入,为输入,dumm

37、y_y为目标输出,迭代次数为为目标输出,迭代次数为500,验证集比例为,验证集比例为20%#注意这里的验证集是全部数据集的后注意这里的验证集是全部数据集的后20%,与训练集完全独立,与训练集完全独立model.fit(X,dummy_y,epochs=500,batch_size=1,validation_split=0.2)运行后可以看到读取的数据:运行后可以看到读取的数据:图图3-19 3-19 读取到的数据读取到的数据经过编码的标签正是经过编码的标签正是one-hot形式:形式:图图3-20 3-20 编编码为码为one-hot形式标签形式标签可以看到网络的结构以及参数个数可以看到网络的

38、结构以及参数个数:图图3-21 3-21 显示的网络结构与参数个数显示的网络结构与参数个数如图如图3-223-22所所示,在训练过程中显示出来的训练样本个数示,在训练过程中显示出来的训练样本个数120120(Train on Train on 120 samples120 samples)和验证样本个数)和验证样本个数3030(validate on 30 samplesvalidate on 30 samples)都与我)都与我们之前设定的们之前设定的80%80%,20%20%相符合。模型开始训练后将显示每一次迭代所用相符合。模型开始训练后将显示每一次迭代所用时间(时间(msms/step/

39、step)、损失()、损失(lossloss)、训练集识别精度()、训练集识别精度(accacc)、验证集损)、验证集损失(失(val_lossval_loss)、验证集精度()、验证集精度(val_accval_acc):):我们可以在我们可以在keras中调用中调用Tensorboard画图来观察模型的性能,例如构造画图来观察模型的性能,例如构造数据流图以及训练过程的识别精度。数据流图以及训练过程的识别精度。图图3-22 3-22 显显训练过程训练过程#调用调用Tensorboardmodel.fit(X,dummy_y,epochs=10,batch_size=1,validation_

40、split=0.2,callbacks=TensorBoard(log_dir=./log_dir)待训练完成后,在终端中输入:待训练完成后,在终端中输入:Tensorboard-logdir=./log_dir此时,终端会显示相应的地址:此时,终端会显示相应的地址:图图3-23 3-23 Tensorboard地址地址图图3-24 3-24 Tensorboard绘绘制的数据流图制的数据流图然后将终端显示的地址输入浏览器,即可看见我们利用然后将终端显示的地址输入浏览器,即可看见我们利用tensorboard绘绘制的一系列图像。例如数据流图如图制的一系列图像。例如数据流图如图3-24所所示。示

41、。数据流图与我们上面所构造的神经网络相匹配,共三层全连接层。数据流图与我们上面所构造的神经网络相匹配,共三层全连接层。图图3-25 3-25 Tensorboard展示训练过程展示训练过程同样我们也可以看到其训练过程中的损失(同样我们也可以看到其训练过程中的损失(loss)与验证集识别精度)与验证集识别精度(val_acc)等,如图)等,如图3-25所所示。示。我们也可以在我们也可以在keras中画出训练过程中模型在验证集和训练集上表现的中画出训练过程中模型在验证集和训练集上表现的图像。此时,我们需要导入新的库:图像。此时,我们需要导入新的库:#内嵌绘图内嵌绘图%matplotlib inli

42、neimport matplotlibimport matplotlib.pyplot as plt在代码的末尾记录训练过程,并画图:在代码的末尾记录训练过程,并画图:history=model.fit(X,dummy_y,epochs=400,batch_size=1,validation_split=0.2)print(history.history.keys()plt.plot(history.historyacc)plt.plot(history.historyval_acc)plt.title(model accuracy)plt.ylabel(accuracy)plt.xlabel(epoch)plt.legend(train,test,loc=upper left)plt.show()最后可以同时得到训练和验证图像。最后可以同时得到训练和验证图像。图图3-26 3-26 Keras展示训练过程展示训练过程通过观察验证集与训练集上的识别精度可以预防过拟合现象的发生。通过观察验证集与训练集上的识别精度可以预防过拟合现象的发生。因此,通常在训练的过程中我们都要画出这个图像进行观察,以保障因此,通常在训练的过程中我们都要画出这个图像进行观察,以保障模型的可靠性。模型的可靠性。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《深度学习》课件3.pptx)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|