CNN卷积神经网络原理

上传人:博****1 文档编号:487284345 上传时间:2023-09-11 格式:DOCX 页数:44 大小:247.45KB
返回 下载 相关 举报
CNN卷积神经网络原理_第1页
第1页 / 共44页
CNN卷积神经网络原理_第2页
第2页 / 共44页
CNN卷积神经网络原理_第3页
第3页 / 共44页
CNN卷积神经网络原理_第4页
第4页 / 共44页
CNN卷积神经网络原理_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《CNN卷积神经网络原理》由会员分享,可在线阅读,更多相关《CNN卷积神经网络原理(44页珍藏版)》请在金锄头文库上搜索。

1、一、CN卷积神经网络原理简介本文重要是具体地解读CN的实现代码。如果你没学习过CNN,在此推荐周晓艺师兄的博文:DepLearnin(深度学习)学习笔记整顿系列之(七),以及FLDL上的卷积特性提取、池化C的最大特点就是稀疏连接(局部感受)和权值共享,如下面两图所示,左为稀疏连接,右为权值共享。稀疏连接和权值共享可以减少所要训练的参数,减少计算复杂度。 至于CN的构造,以典型的Let来阐明:这个图真是无处不在,一谈CNN,必说eNet5,这图来自于这篇论文:GradietBaed Leanin Ap to Documenecogition,论文很长,第7页那里开始讲LeN这个构造,建议看看那部

2、分。我这里简朴说一下,LNet5这张图从左到右,先是iput,这是输入层,即输入的图片。npt-ye到C1这部分就是一种卷积层(onoluto运算),C1到S2是一种子采样层(olin运算),有关卷积和子采样的具体过程可以参照下图:然后,S2到C3又是卷积,C3到S4又是子采样,可以发现,卷积和子采样都是成对浮现的,卷积背面一般跟着子采样。S4到C5之间是全连接的,这就相称于一种LP的隐含层了(如果你不清晰MP,参照DeLeg tuoial(3)MLP多层感知机原理简介+代码详解)。C5到6同样是全连接,也是相称于一种MP的隐含层。最后从F到输出ot,其实就是一种分类器,这一层就叫分类层。o,

3、NN的基本构造大概就是这样,由输入、卷积层、子采样层、全连接层、分类层、输出这些基本“构件”构成,一般根据具体的应用或者问题,去拟定要多少卷积层和子采样层、采用什么分类器。当拟定好了构造后来,如何求解层与层之间的连接参数?一般采用向前传播(FP)向后传播(BP)的措施来训练。具体可参照上面给出的链接。二、CNN卷积神经网络代码具体解读(基于yhn+tano)代码来自于深度学习教程:Cnvolutnl Neral etwoks (LNet),这个代码实现的是一种简化了的LNt5,具体如下: 没有实现locati-siicgi an aspeers 用的是maxpoin,而不是eage_pooli

4、n 分类器用的是ftma,LNet用的是rbf LeNt5第二层并不是全连接的,本程序实现的是全连接此外,代码里将卷积层和子采用层合在一起,定义为“LeNetConvPooLay“(卷积采样层),这好理解,由于它们总是成对浮现。但是有个地方需要注意,代码中将卷积后的输出直接作为子采样层的输入,而没有加偏置再通过imoid函数进行映射,即没有了下图中x背面的bx以及sigo映射,也即直接由得到x。最后,代码中第一种卷积层用的卷积核有20个,第二个卷积层用50个,而不是上面那张Let5图中所示的6个和16个。理解了这些,下面看代码:(1)导入必要的模块pynelaincopy1. mportcck

5、le2. ipot3. impro4. importss5. imprt6. 7. imprnmpy8. 9. importheano10. mptheano.tenos11. fromentnsor.ialmprtdwsampl12. frmthean.nso.nnetiprov(2)定义CN的基本构件NN的基本构件涉及卷积采样层、隐含层、分类器,如下 定义NeonvPooyer(卷积+采样层)见代码注释:toneplaco1. 2. 卷积+下采样合成一种层LNtConvPoole3. rng:随机数生成器,用于初始化W4. iut:4维的向量,tanotnsodtns45. ilterha

6、e:(meroffilter,umiptfeatrema,filrheih,filterih)6. imag_sha:(atchsze,uutfatur,imaeet,imaed)7. polsize:(#rws,cols)8. 9. classLeNtConPolaer(bject):10. def_int_(lf,rg,iput,itrshae,iae_ape,oolse=(2,2):11. 12. #asstnditon,coditin为Tre,则继续往下执行,ndton为ale,中断程序13. image_sae和flter_sae1都是numinpteurep,它们必须是同样的。14

7、. ssetimage_shape1=flr_sap115. sf.input=inpt16. 17. #每个隐层神经元(即像素)与上一层的连接数为miptfeauremaps*filterheight*fiteridth。18. 可以用numpypro(filter_hape1:)来求得19. fan_in=numpyprod(iltrhpe1:)20. 21. #lweraer上每个神经元获得的梯度来自于:numoupufaturemap*ltigt*itewith/plnize22. aot=(files0*numpy.rd(filtrshap:)/23. numpyprd(poolsz

8、e)24. 25. #以上求得fan_、a_t,将它们代入公式,以此来随机初始化W,W就是线性卷积核26. W_und=prt(/(faninfaou)27. sef.W=theao.shre(28. umpy.sarry(29. rn.nfom(lw=-Wbon,hh=W_bnd,ze=fltr_shap),30. dtype=thanoconfigfloatX31. ),32. borTrue33. )34. 35. #ebsistenso-oebispouteatreap36. #偏置b是一维向量,每个输出图的特性图都相应一种偏置,37. 而输出的特性图的个数由filter个数决定,因此

9、用er_shape0即numeroffiltes来初始化38. b_uesnupyzeos(iltrshp0,),dtye=thenci.aX)39. elfb=thean.r(vubvalus,rrowrue)40. 41. #将输入图像与lter卷积,ovcond函数42. #卷积完没有加b再通过igmod,这里是一处简化。43. onvot=covcnv2d(44. ut=nput,45. fterelfW,46. iltershpe=filer_e,47. iae_shae=age_shape48. )49. 50. #maxpoolg,最大子采样过程51. pole_outdosap

10、le.max_ol_2(52. inu=convout,53. ds=poolsze,54. igore_boder=Tue55. )56. 57. #加偏置,再通过th映射,得到卷积+子采样层的最后输出58. #由于b是一维向量,这里用维度转换函数dmhufle将其reshape。例如是(1,),59. #则.dimuf(x,0,x))将其rsa为(,1,1,1)60. selutpt=T.tan(pooled_u+e.dimhule(x,x,x))61. #卷积+采样层的参数62. slf.paams=lfW,seb 定义隐含层HddnLayer这个跟上一篇文章DeeLeaning toi

11、al(3)P多层感知机原理简介+代码详解中的HiddenLer是一致的,直接拿过来:ptoview pincopy1. 2. 注释:3. 这是定义隐藏层的类,一方面明确:隐藏层的输入即input,输出即隐藏层的神经元个数。输入层与隐藏层是全连接的。4. 假设输入是n_in维的向量(也可以说时n_i个神经元),隐藏层有_ut个神经元,则由于是全连接,5. 一共有_*n_ot个权重,故大小时(n_in,_out),_i行n_ou列,每一列相应隐藏层的每一种神经元的连接权重。6. b是偏置,隐藏层有no个神经元,故b时n_out维向量。7. rn即随机数生成器,ump.rndoRanoState,用于初始化W。8. npu训练模型所用到的所有输入,并不是MP的输入层,ML的输入层的神经元个数时n_in,而这里的参数pu大小是(n_examl,in),每一行一种样本,即每一行作为MLP的输入层。9. ctivan:激活函数,这里定义

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 幼儿教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号