N卷积神经网络原理简介blog./u012162613/article/details/N的实现代码。N,在此推荐周晓艺师兄的博文:DeepLearning(深度学整理系列之(七),以及UFLDL上的卷积特征提取、N的最大特点就是稀疏连接(局部感受)和权值共享,如下面两图所示,左为稀疏连接,右为权值共享。稀疏连接和权值共享可以减少所要训练的参数,减少计算复杂度。 N的结构,5来说明:这个图真是无处不在,N,5,这图来自于这篇论文:Gradient-BasedLearningAppliedtoDocumentRecognition,论文很长,5这个结构,建议看看那部分。我这里简单说一下,5这图从左到右,先是input,这是输入层,即输入的图片。input-layer到C1这部分就是一个卷积层(convolution运算),C1到S2是一个子采样层(pooling运算),关于卷积和子采样的具体过程可以参考下图:然后,S2到C3又是卷积,C3到S4又是子采样,可以发现,卷积和子采样都是成对出现的,卷积后面一般跟着子采样。S4到C5之间是全连接的,这就相当于一个MLP的隐含层了(如果你不清楚MLP,参考《DeepLearningtutorial(3)MLP多层感知机原理简介+代码详解》)。C5到F6同样是全连接,也是相当于一个MLP的隐含层。最后从F6到输出output,其实就是一个分类器,这一层就叫分类层。N的基本结构大概就是这样,由输入、卷积层、子采样层、全连接层、分类层、输出这些基本“构件”组成,一般根据具体的应用或者问题,去确定要多少卷积层和子采样层、采用什么分类器。当确定好了结构以后,如何求解层与层之间的连接参数?一般采用向前传播(FP)+向后传播(BP)的方法来训练。具体可参考上面给出的。N卷积神经网络代码详细解读(基于python+theano)代码来自于深度学习教程:works(),5,具体如下:没有实现location-specificgainandbiasparameters用的是maxpooling,而不是average_pooling分类器用的是softmax,5第二层并不是全连接的,本程序实现的是全连接另外,代码里将卷积层和子采用层合在一起,定义为“ConvPoolLayer“(卷积采样层),这好理解,因为它们总是成对出现。但是有个地方需要注意,代码中将卷积后的输出直接作为子采样层的输入,而没有加偏置b再通过sigmoid函数进行映射,即没有了下图中fx后面的bx以及sigmoid映射,也即直接由fx得到Cx。最后,代码中第一个卷积层用的卷积核有20个,第二个卷积层用50个,5图中所示的6个和16个。了解了这些,下面看代码:(1)导入必要的模块[python] viewplain copyimport cPickle import gzip import os import sys import time import numpy import theano import as T from import downsample from import conv (2)N的基本"N的基本构件包括卷积采样层、隐含层、分类器,ConvPoolLayer(卷积+采样层)见代码注释:[python] viewplain copy""" 卷积+ConvPoolLayer rng:随机数生成器,用于初始化W input:4维的向量, filter_shape:(number of filters, num input feature maps,filter height, filter width) image_shape:(batch size, num input feature maps,image height, image width) poolsize: (#rows, #cols) """ class ConvPoolLayer(object): def __init__(self, rng, input, filter_shape, image_shape, poolsize=(2, 2)): #assert condition,condition为True,则继续往下执行,condition为False,中断程序 #image_shape[1]和filter_shape[1]都是num input feature maps,它们必须是一样的。 assert image_
CNN卷积神经网络原理 来自淘豆网m.daumloan.com转载请标明出处.