keras图像深度学习实战.docx

上传人:李司机 文档编号:7263857 上传时间:2024-08-04 格式:DOCX 页数:128 大小:743KB
返回 下载 相关 举报
keras图像深度学习实战.docx_第1页
第1页 / 共128页
keras图像深度学习实战.docx_第2页
第2页 / 共128页
keras图像深度学习实战.docx_第3页
第3页 / 共128页
keras图像深度学习实战.docx_第4页
第4页 / 共128页
keras图像深度学习实战.docx_第5页
第5页 / 共128页
点击查看更多>>
资源描述

《keras图像深度学习实战.docx》由会员分享,可在线阅读,更多相关《keras图像深度学习实战.docx(128页珍藏版)》请在三一办公上搜索。

1、图像深度学习实战2023目录I谕介1.1 keras是什么12一些基本概念1.3 安装Pythim91.4 安装TheanO101.5 安装opcncv111.6 安装Kerus122CNN132.1 卷枳神经网络U2.2 使用Kenw探索卷枳网络的泄波器1723可视化所有的沌波落212.4 愚弄裨授网络222.5 展望未来243.1 Sequentia1.fft5?2S3.2 常用层313.3 卷枳层403.4 池化层444目标函数464.1 MSE474.2 MAE484.3 MAPE494.4 MS1.E504.5 SquarcdJinge514.6 hinge524.7 binary_

2、cro$entropy534.8 CategoriCa1.CrOSSentrOPyS44.9 sparse-categorica1.-crossentroSS5优化器二二565.1 公共参数575.2 SGDS85.3 RMSprop595.4 Adagrad605.6 Adam5.7 Adamax5.8 Nadam6训绦校叁的注意事项6.1 参数初始化6.2 数据预处理(DaiaPreProCeXXing)7图片预处理7.1 利用小数据信7.2 图像处理SCiPy.IK1.image7.3 热点图7.4 岛斯迪波7.5 图片翻转7.6 轮廓拄测7.7 角点7.8 直方图7.9 态学图像处理8

3、.1 Mnisi.46788044902S702486666777788889998.2 Crfar1.6.8.4 视攻识别1148.5 用神经网络去噪1258.6 视叛抽取图片1321简介1.1 keras是什么KeraS是基T-TheanO或TenSOrF1.OW的,个深度学习他架.它的设计参考/Torch,用PvIhon语言编写,是一个高度模块化的神经网络库,支持GPU和CPU。KCraS可以通过PiP安装,国内可以换一个豆冠PiP源,网速快的惊人!临时使用时可以使用下述命令:pipinsta1.1.PythooNodu1.eNane-1https:/pypi.douban.ccm/si

4、np1.e也可以永久更改:rooV.pippip.conf:g1.oba1.index-Ur1.=在pip.conf中,添加以上内容.就修改J默认的软件源。到ht1.pspypi.pythn.org.pypi下载所需的PWhon库.直到安装KCraS安装以下软件包,排名不分先后:Scipy.NumpyfThcano.Tcnsowf1.ow.Pyyam1.Six,pycparscr.cft1.KCraS等。如果是.wh1.则运行PiPinsta1.1.xxx.wh1.安装,如果是SetUP.y则运行PyuIonSeIUP.pvinsia1.1.安装(如果是源码先运行PythonSCtuP.pyb

5、ui1.d),如果缺少依赖包会有提示,到pypi.python.org卜,载对应的依赖包围由新安装就可以了。安装过程中需要用到vc+forp义hon编译器,到微软官网上下跳.也可从hup:/aka.ms.vcpython27i4去*安装SCiPy的时候报错noIapackzb1.asresourcesfound,最后找到一个方法,1.http.,www.1.1.d.uci.edu-goh1.ke.python1.ibsT斑CiPy对应的vh1.安装即可。最后运行keras的例子:PythOnimdbstm.py,如果正常运行说明KeraS安装成功/!如果没有安装TCnSOrFIw但安装了ThC

6、ano,KJimportkcras公提示找不到TcnsorFIow,因为KCraS默认的backend是TCnSOrFkHV,这时候找到用户目录卜的.kcraskcras.json,将backend从tensorf1.ow改成“theano。例如目录下:C:Users17020405.keras如果还不行则修改1.ibsite-packageskerasbackend卜的_inii,Py文件,将_BACKEND从tensori1.oW”改成iheano”“1.2 一些基本概念在开始学习KeraS之前,我们希望传递一些关于Kerax,关于深度学习的基本概念和技术.这将减少学习过程中的困惑,1.2

7、.1 符号计算KeraS的底层库使用Theano或TenSOrHow,这两个库也称为KeraS的后端。无论是Theano还是TenSOrF1.Ow,都是一个“符号式”的库。因此,这也使得KCraS的编程与传统的PVthOn代码有所差别,笼统的说,符号主义的计和首先定义各种变量,然后建立一个“计算图”,计算图规定了各个变量之间的计算关系。建立好的计算图需要编译以确定其内部细节.然而,此时的计算图还是一个“空壳子”,里面没有任何实际的数据.只书当你把需要运算的输入放进去后,才能在整个模型中形成数据流,从而形成输出值。就像用管道搭建供水系统,当你在拼水管的时候,电面是没有水的。只有所有的管子都接完了

8、,才能送水。KeraS的模型搭建形式就是这种方法,在你搭建Keras模型完毕后,你的模型就是一个空壳子,只有实际生成可调用的函数后(KJunction).输入数据,才会形成真正的数据流,使用计算图的语言,如Thean。,以难以谢试而闻名,当KeraS的DebUg进入Thean。这个层次时,往往也令人头痛。没花经脸的开发者很难直观的感受到计算图到底在干些什么。尽管很让人头痛,但大多数的深度学习框架使用的都是符号计算这一套方法,因为符号计免能够提供关键的计免优化、自动求导等功能“通常建议在使用KCraS前稍微了解一卜ThCan。或TCnSorF1.ow,百度一卜即叫1.2.2 张量张量,或IenS

9、Or,是本文档会经常出现的一个词汇,在此稍作解择。使用这个词汇的目的是为了表述统一,张量可以看作是向此、矩阵的自然推广,我们用张量来表示广泛的数据类型。规模最小的张量是O阶张量:,即标量,也就是一个数。当我们把一些数有序的排列起来,就形成门阶张垃.也就是一个向量。如果我们继续把一组向量有序的排列起来,就形成了2阶张量,也就是一个矩阵。把矩阵摞起来,就是3阶张量,我们可以称为一个立方体,具有3个颜色通道的彩色图片就是一个这样的立方体。把立方体摞起来,好吧这次我们真的没行给它起别名1.就叫4阶张量,不要去试图想像4阶张址是什么样子,它就是个数学上的概念“张量的阶数有时候也称为维度,或者轴,轴这个词

10、翻译自英文axis.怦如一个矩阵W.2.3.4b是一个2阶张量,有两个维度或轴,沿着第O个轴(为了与Python的计数方式一致,本文档维度和轴从0算起)你看到的是1.2,3.4)两个向量,沿着第I个轴你看到的是,3,2.4两个向此“要理解“沿着某个抽是什么意思,不妨试着运行一下下面的代码:i11portnu11pyas11pa-n.array(1.,2,3,4SUnBnp.surv(aais)sun!三n.sura(a,ais三1.)printSUf1.eprintSMI关于张量.目前知道这么多就足够r。1.2.3 data_format这是一个无可奈何的问题,在如何表示一组彩色图片的问题上,

11、ThCanO和TenSOrFIOW发生了分歧,W模式,也即TheanO模式会把100张RGB三通道的16x32(高为16宽为32)彩色图表示为卜面这种形式(100,3,16.32),CaffC采取的也是这种方式。第0个维度是样本维,代表样本的数目,第I个维度是通道维,代表颜色通道数。后面两个就是高和宽了.这种Iheano风格的数据组织方法,称为“channe1.s_first”,即通道维靠前。而TenSOrF1.oW的表达形式是(100.16.32,3),即把通道维放在了最后,这种数据组织方式称为“channC1.SJaSKeraS默认的数据组织形式在-.keraskeras.json中规定,

12、可查看该文件fi;Jimage_da1.a_fonnat项,也可在代码中通过K.image_data_fonM()函数返回,请在网络的训练和测试中保持维度顺序一致.1.2.4 模型在KCraSo.x中有两种模型,一种是SCqUCntiaI模型,又称为序贯模型,也就是单输入单输出,一条路通到底,层与层之间只有相邻关系,没有跨层连接.这种模型编译速度快,操作上也比较简单.第二种模型称为GraPh.即图模型,这个模型支持多输入多输出,层与层之间想怎么连怎么连,但是编译速度慢。可以看到,SCquCntia1.其实是GraPh的一个特殊情况。在KeraSI和KeraS2中,图模型被移除,从而增加了“fi

13、inctiona1.mode1.AP这个东西,更加强调了SeqUenIiaI模型是特殊的一种.一般的模型就称为MOdCI.由于functiona1.mode1.AP1.在使用时利用的是,函数式编程”的风格,我们这里将其称为函数式模型。总而言之,只要这个东西接收一个或一些张殳作为输入,然后输出的也是一个或一些张址.但不管它是什么,统统都叫做“模型”1.2.5 batchbatch这个概念与KeraS无关,老实讲不应该出现在这里的,但是因为它频繁出现,而且不了解这个术语的话看函数会很头痛,所有这里还是简雎说一下。深度学习的优化算法,说白了就是梯度下降.每次的参数更新有两种方式。第一种,遍历全部数据

14、桀免一次损失函数,然后算函数对各个参数的梯度,更新梯度.这种方法每更新一次参数都要把数据集里的所有样本都看一道,计算量开销大,计兑速度慢,不支持在线学习,这称为BatChgradiCntdCSCCnt,批梯度卜降。另一种,每看一个数据就算一下损失函数,然后求梯度更新参数.这个称为随机梯度下降.Stochasticgradientdescen1.,这个方法速度比较快,但是收敛性能不太好,可能在最优点附近晃来晁去,hit不到最优点.两次参数的更新也有可能互相抵消掠,造成目标函数震荡的比较剧烈.为了克服两种方法的缺点,现在一般采用的是一种折中手段,mini-batchgradientdecent.小

15、批的梯度下降,这种方法把数据分为若干个批,按批来更新参数,这样,一个批中的一组数据共同决定了本次梯度的方向,下降起来就不容易阻偏,减少了M机性“另一方面因为批的样本数与整个数据集相比小了很多,所以计算量也不是很大。基本上现任的梯度下降都是基于minibaich的,所以Kem的模块中经常会出现batch_size,就是指这个。顺便说一句,KeraS中用的优化器SGD是S1.OChaNiCgradiCntdeSCenI的缩写,但不代表是个样本就更新一回,而是柒于mini-batch的.1.2.6 epochs简单说,epochs指的就是训练过程中数据将被“鸵血”多少次,就这样。1.3 安装Pyth

16、o1.I安装PyIhOn2.7版本,具体安装方法这里就不详细说明了“1.4 安装Theano/htps:github.conTheanaTheanoT数TheanO的主版本,将IheanO目录放到Py1.hOn的1.ibsite-packagesKeras目录中。从gMhb卜,栽KCraS源码并安装到Python环境中”1.5 安装OPenCV图像识别需要我们首先安装Pwhon环境下的图像处理库.PWhon社区提供了许多的图像处理库,这里我们使用。PCnCv作为图像处理库。笔者是卜我。PCnCV的WhI安装文件进行安装的,命令为:pipInsta1.1.opencv_python-3.2.7-

17、cp27-cp27m-win_and64.wh1.如果安装过程中由于网络的原因等造成依赖包无法下就安装,则可以根据提示从:hups:/pypi.python.org.pypi卜载所需的依赖包成本,先安装依赖再安装。PCnCV,直到最后安装成功。1.6 安装KeraSA注意这里Ken1.S和Theano的版本要保持致、否则容易出现不装容的情况而导致示例代码无法运行.笔者安装的是gihub上的master版本.可以正常运行示例。2CNN眼中的世界我们首先以KCraS官网中一篇经典的关于CNN原理的科普文章作为开始,从这篇文章中找们希望能了解到CNN模型的前世今生,以及对CNN原理有一个初步的感性认

18、识.2.1 卷积神经网络卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成.上图是卷枳神经网络的概念示范:输入图像通过和三个可训练的源波器及可加偏置进行卷积,卷枳后在。层产生三个特征映射图,然后特征映射图中每组的四个像素再进行求和,加权值,加偏兄通过一个Sign1.Oid函数得到三个S2层的特征映射图。这些映射图再进过滤波得到C3层。这个层线结构再和S2一样产生S4。最终,这些像素值被光栅化,并连接成一个向量输入到传统的神经网络,从而得到输出。每个层有多个FeaIUreMap,每个FeaIUrCMaP通过一种卷积波波器提取输入的一种特征,然后每个FeaIU

19、reMaP有名个神经元“卷积过程如下,比如矩阵123,45,6,假设卷积核为2,2,初始偏移为0.假设权盘为0.2,则卷积之后的结果为06.0.8.计算过程如下:(180.2+2*0.2+4*0.2+5*0.2)4=2.44=0.6(20.2+3*0.2+5*0.2+6*0.2V4=3.24=0.8CNN一个极具创新的地方就在于通过权值共享减少神经网络需要训练的参数数目,所谓权值共享就是同一个FeaIUreMaP中神经元权值共享,该FeaIUreM呼中的所有神经元使用同一个权值C因此参数个数与神经元的个数无关,只与卷积核的大小及FCatUrCMaP的个数相关。但是共有多少个连接个数就与神经元的

20、个数相关了,神经元的个数也就是特征图的大小。下面以鼓经典的1.eNet-5例子来逐层分析各层的参数及连接个数。OUTPUTFgconnectionSubsampftngConvo1.ubansSUMarnPeF)Fu1.connectionCI层是一个卷积层,由6个特征图FeatUreMaP构成。特征图中每个神经元与输入为55的邻域相连。特征图的大小为28*28,这样能防止输入的连接掉到边界之外(32-5+1=28)。C1.有156个可训练参数(每个泄波器5*5=25个Uni1.参数和一个bias参数,一共6个灌波器,共(5*5+1)*6=156个参数),共156*(28*28)=122,30

21、4个连接-S2层是一个下采样层,有6个1414的特征图。特征图中的每个单元与CI中相对应特征图的2*2邻域相连接。S2层每个单元的4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。每个单元的2*2感受野并不重叠,因此S2中每个特征图的大小是C1.中特征图大小的1/4(行和列各1/2)S2层有12(6(1+1)=12)个可训练参数和5880(14*14*(2*2+1)*6=5880)个连接。C3层也是一个卷积层,它同样通过5x5的卷积核去卷积层S2,然后得到的特征m叩就只有IOX1.o个神经元,但是它有16种不同的卷积核,所以就存在16个特征InaP了。C3中每个特征图由S2中所彳6个或者

22、几个特征map组介而成。为什么不把S2中的每个特征图连接到每个C3的特征图呢?原因有2点.第一.不完全的连接机制将连接的数垃保持在合理的范圉内,第二,也是最重要的,其破坏了网络的对称性。由于不同的特征图有不同的输入,所以迫使他们抽取不同的特征(希望是互补的)。例如,存在的个方式是:C3的前6个特征图以S2中3个相邻的特征图子集为输入.接下来6个特征图以S2中4个相邻特征图子集为输入.然后的3个特征图以不相邻的4个特征图子集为输入,最后一个将S2中所有特征图为输入,这样C3层有1516(6*3*25+i)+6*(4*25+1)+3*(4*25+1)+(25*6+1)=1516)个可训练参数和15

23、1600(10*10*1516=151600)个连接.S4层是一个下采样层,由16个55大小的特征图构成。特征图中的每个单元与C3中相应特征图的2*2邻域相连接,跟C1.和S2之间的连接样,S4层有32个可训练参数(每个特征图I个因子和一个偏附16*1+1)=32)和200016*(2*2+1)*5*5=2000)个连接“C5层是一个卷枳层,有120个特征图。每个单元与S4层的全部16个单元的5*5邻域相连。由于S4层特征图的大小也为5*5(同i虑波器一样),故C5特征图的大小为(5.5+1=1):这构成/S4和C5之间的全连接,之所以仍将C5标示为卷积层而非全相联层,是因为如果1.eNet-

24、5的输入变大,而其他的保持不变,那么此时特征图的维数就会比1*1大.C5层有48120(120*(16*5*5+1)=48120由于与全部16个单元相连,故只加一个偏H)个可训练连接。F6层有84个单元(之所以选这个数字的原因来自于输出层的设计),与C5层全相连。有10164(84*(120*(1*1)+1)=10164)个可训练参数。如同经典神经网络,F6层计算输入向量和权重向量之间的点积再加上一个偏置.然后将其传递给Sigmoid函数产生单元1的一个状态.最后,输出层由欧式径向基函数(EIIC1.idCanRadia1.Ba$isFunction)堆元组成,每类一个单元,每个有84个输入。

25、卷积过程包括:用一个可训练的泄波器以去卷枳一个输入的图像(笫一阶段是输入的图像,后面的阶段就是卷枳特征map了),然后加一个偏置bx,得到卷枳层Cx0子采样过程包括:传邻域四个像素求和变为一个像素,然后通过标量Wx+1加权,再增加偏置bx+1.,然后通过一个Sigmoid激活函数,产生一个大概缩小四倍的特征映射图Sx+1,2.2 使用Keras探索卷积网络的滤波器本文中我们将利用KeraS观察CNN到底在学些什么.它是如何理解我们送入的训练图片的。我们将使用KCra$来对滤波器的激活值进行可视化。本文使用的神经网络是VGG-16,数据集为ImageNeI。本文的代码可以在gihub找到。VGG

26、-16又称为OXfordNC3是由牛津视觉几何组(ViSUaIGCOmCtryGrouP)开发的卷积神经网络结构。该网络标得了I1.SVR(ImageNet)2014的冠军,时至今日,VGG仍然被认为是一个杰出的视觉模型-尽管它的性能实际上已经被后来的InCePIiOn和ReSNe1.超过1.orvnmBura1.di将Cant1.练好的VGGI6和VGGI9模型转化为了KeraS权重文件,所以我们可以简单的通过载入权重来进行实验。该权重文件的卜载需要自备梯子(这里有一个网盘保持的vgg16:h1.1.p:,WeightSvgg1.6_Weighg.h5赶紧卜.我)1)ttconverttoR

27、GBarrayx255xx.tra5po5c(1.,2,)11p.c1.ip(x,0,2SS).astypc(,uint8)returnximg=1.nput_img_data(0rc1.u,n11c-conv2-2,)mode1.add(MaPoo1.ing2D(2t2)fstrides=(2,2)mode1.add(ZeroPadd1ng2D(1,1)mcx1.e1.add(Convo1.ution2D(256,3,3,activation=re1.u,fmode1.add(ZeroPaJding2D(1.,1)mode1.add(Convo1.ution2D(256,3,3tactiva

28、tion=*re1.u,mode1.ad1.(ZeroPajding2D(1.,1)mode1.add(Covo1.utio2D(256,3,3,activation=,re1.u,rJe1.add(MaxPoo1.ing2D(2,2),StrideS-(2,2)mode1.add(ZeroPadding2D(1,1)mode1.adJ(Co11vo1.utio112D(512,3,3,activation-,re1.u,mode1,add(ZeroPaddi11g2D(1,1)11Je1.aJ1.(Convo1.ution2D(512,3.3.activation-,re1.u,mode1.

29、add(2croPadding2D(1.,1)mode1.add(Convo1.ution2D(512,3,3,activation-,rc1.u,mode1.add(MaPoo1.ing2D(2,2),Jtrides(2,2)mode1.add(2croPadding2D(1.,1)mode1.aM(Convo1.ution2D(512,3.3,activation=re1.uffnode1.astrides=(2,2)nane三conv3-1.,)na11e三,cov3-2)na11e=conv3-3)na11e-,conv4-1.,)na11e-,conv4-2,)na11c-conv4

30、_3,)nane三convS_1.)nane三convS_2)nae=conv5-3)Wgetthesymbo1.icoutputsofeachkey1.ayer(wegavethenuniquenames),1.ayer-dict-dict(1.ayer.name,1.ayer)for1.ayerin11ode1.1.ayers)西.现在我们使用KCraS的后端来完成这个损失函数,这样代码不用修改就可以在TCnsOrFknv和ThCano之间切换了。TCnSorF1.oW在CPU上进行卷积要快的多,而目前为止ThCan。在GPU上进行卷积要快一些。fro11kcrasirrportbacke

31、ndKIayejnafIe三,conv5-1.,i1.ter-index=Nbui1.da1.ossfunctionthatmaximizestheactivation* OfthenthH1.terOfthe1.ayerconsidered1.ayer_output-1.ayer-dict1.ayer-11a11e.output1.oss=K.11ean(1.ayer-output:,fi1.ter-inje1.:4:)* CO叩Utethegradientoftheinputpicturewrtthis1.ossgrads-K.grdicnts(1.oss,inputting)0* nor

32、11a1.izatiotrick:Wenorm1.izethegradientgrads/-(K.sqrt(K.rxan(K.square(grads).1.c-S)#thisfunctionreturnsthe1.ossandgradsgiventheinputpictureiterate三K.function(Input_ictg),(1.oss,grads)注意这里有个小IriCk.计尊出来的梯度进行了正规化,使得梯度不会过小或过大.这种正规化能够使梯度上升的过程平滑进行。根据刚刚定义的函数,现在可以对某个泯波涔的激活值进行梯度上升。i11portnu11pynp* westartfro

33、grayijgcwithsomenoiseinput_ing_data-np.random.ra11dr(1,3,img_width,img-hcight)20*128.rungradientascentfor20stepsfor1inrange(2):1.oss-va1.ue,grads_va1.ue=1.terate(input_1.mg_data)iput-ing-data=grads-va1.uestep使用TenSOrFbw时,这个操作大概只要几秒,然后我们可以提取出结果,井可视化:img-Jeprocess-imae(ig)imsavc(%5_fi1.ter-%d.png,%(1.

34、aycr-nanc,fi1.tcr-inde),i11g)这里是第5卷基层笫O个滤波器的结果:2.3 可视化所有的滤波器下面我们系统的可视化一下各个层的各个波波器结果,百看CNN是如何对输入进行逐层分解的。第一层的滤波器主要完成方向、颜色的编码,这些颜色和方向与基本的纹理组C逐渐生成复杂的形状.可以将每层的灌波器想像为基向量,这些基向量一股是过完备的。基向量可以将层的输入紧凑地编码出来,灌波器随惹其利用的空域信息的拓宽而更加精细和史杂。上图只是展示了部分内容.可以观察到,很多泄波器的内容其实是一样的,只不过旋转了一个随机的的用度(如90度)而已。这意味着我们可以通过使得卷枳消波器具有旋转不变性

35、而显著减少渔波雄的数目,这是一个有趣的研究方向。令人震惊的是,这种旋转的性顺在高层的泯波港中仍然可以被观察到,如ConV4,2.4 愚弄神经网络如果我们添加上VGG的全连接层,然后试图最大化某个指定类别的激活值呢?你会得到一张很像该类别的图片吗?让我们试试。这种情况下我们的损失函数长这样:1.aycr-output-rodc1.1.aycrj-1.gct-output()1.oss三K.nean(1.ayer_output(:foutput-in1.e)比方说我们来最大化输出下标为65的那个类,在ImageNe里,这个类是蛇,很快,我们的损失达到了0999,即神经网络有99.9%的概率认为我们

36、生成的图片是一条海蛇,它长这样:不太像呀,换个类别试试,这次选喜鹄类(第18类)。0K,我们的网络认为是喜船的东西看起来完全不是喜鹄,往好了说,这个图里跟喜的相似的,也不过就是一些局部的蚊理,如羽毛、嗡巴之类的:那么,这就意味若卷积神经网络是个很差的工具吗?当然不是,我们按照一个特定任务来训练它.它就会在那个任务上表现的不错.但我们不能有网络“理解”某个概念的错觉“我们不能籽网络人格化,它只是工具而已。比如一条狗,它能识别其为狗只是因为它能以很高的概率将其正确分类而已,而不代表它理解关于“狗”的任何外延。2.5 展望未来所以,神经网络到底理解了什么呢?我认为有两件事是它们理解的“其一,神经网络

37、理解了如何将输入空间解耦为分层次的卷积滤波器组。其二,神经网络理解r从一系列浊波器的组合到一系列特定标签的概率映射,神经W络学习到的东西完全达不到人类的“看见”的意义,从科学的的角度讲,这当然也不意味着我们已经解决了计尊机视觉的问题,想得别太多,我们才刚刚踩上计算机视觉天梯的第一步。有些人说,卷积神经网络学习到的对输入空间的分层次解耦模拟了人类视觉皮层的行为。这种说法可能对也可能不对,但目前未知我们还没有比较强的证据来承认或否认它。当然,有些人可以期翦人类的视觉皮层就是以类似的方式学东西的,某种程度上讲,这是对我们视觉世界的自然解糊(就像傅里叶变换是对周期声音信号的一种解耦一样自然).但是,人

38、类对视觉信号的油波、分层次、处理的本质很可能和我们弱鸡的卷枳网络完全不是一回事。视觉皮层不是卷枳的,尽管它们也分层,但那些层具有皮质列的结构,而这些结构的真正目的目前还不得而知,这种结构在我们的人工神经网络中还没有出现(尽管乔大帝GeoffHintOn正在在这个方面努力)。此外,人类有比给静态图像分类的感知器多得多的视觉感知器,这些感知器是连续而主动的,不是好态而被动的,这些感受器还被如眼动等多种机制复杂控制。总而言之,卷积神经网络的叫视化工作是很让人着迷的,谁能想到仅仅通过简填的梯度卜.降法和合理的损失函数,加上大规模的数据库,就能学到能很好解择史杂视觉信息的如此漂亮的分层模型呢。深度学习或

39、许在实际的意义上并不智能,但它仍然能够达到几年前任何人都无法达到的效果“现在,如果我们能理解为什么深度学习如此有效,那嘿%3KeraS模型3.1 SeqiIei1.tiaI模型KeraS-般用SeqUentia1.模型做为搭建神经网络的开始,本节简要论述SeqUenIia1.模型接口的主要使用方法。3.1.1 add定义:add(sc1.f.1.ayer)用途:向模型中添加一个层。参数Iayer是1.ayer对象,也即是层“3.1.2 pop定义:pop(sc1.f)用途:伸出模型最后的一层,无返回值.该方法一般很少用到。3.1.3 compi1.e定义:co11pi1.e(se1.f,opt

40、imizer,1.oss,TCtrics-None,SdmP1.e_Weight_Gode-None)该方法疑译用来配置模型的学习过程,共参数有以下这些: optimizer:字符串(预定义优化器名)或优化器对象,参考优化器。 1.oss:字符串(预定义损失函数名)或目标函数,参考损失函数. metrics:列表,包含评估模型在训练和测试时的网络性能的指标,典型用法是11etrics=accuracyo SamP1.JWeightnode:如果你帑要按时间步为样本赋:权(2D权矩阵),将该假设为“tempora1.”。默认为“None、,代表按样本赋权(ID权)。 kwargs:使用TenSOrHoW作为后端清忽略该参数,若使用TheanO作为后端,kvargs的值将会传递给K.function”例子:mode1.-Sequentia1.Omode1.ava1.idation-sp1.it=.e,Va1.木函数将模型训练epoch轮,其参数有: X:输入数据.如果模型只有一个输入,那么X的类型是numpyarray,如果模型有多个输入.那么X的类型应当为Iis1.,1.ist的元索是时应于各个输入的numpyarray. y:标签向量,numpyarray类型。 batch_SiZe:整数,指定进行梯度下降时每个baich包含的样本数,训练时一个batch的样

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号