LeNet-5是一种用于手写体字符识别的很是高效的卷积神经网络。原文下载。git
LeNet-5网络结构

- LeNet-5共有7层,不包含输入层;
- 网络结构能够描述为:卷积=>下采样=>卷积=>下采样=>卷积=>全链接=>全链接
各层参数详解
INPUT层-输入层
首先是数据 INPUT 层,输入图像的尺寸统一归一化为32*32。github
C1层-卷积层
- 输入图片:32x32
- 卷积核大小:5x5
- 卷积核种类:6
- 输出featuremap大小:28x28 (32-5+1)=28
- 神经元数量:28x28x6
- 可训练参数:(5x5+1) x 6(每一个滤波器5x5=25个unit参数和一个- - bias参数,一共6个滤波器)
- 链接数:(5x5+1)x6x28x28=122304
S2层-池化层(下采样层)
- 输入:28x28
- 采样区域:2x2
- 采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果经过sigmoid
- 采样种类:6
- 输出featureMap大小:14x14(28/2)
- 神经元数量:14x14x6
- 链接数:(2x2+1)x6x14x14
S2中每一个特征图的大小是C1中特征图大小的1/4。web
C3层-卷积层
- 输入:S2中全部6个或者几个特征map组合
- 卷积核大小:5x5
- 卷积核种类:16
- 输出featureMap大小:10x10 (14-5+1)=10
C3中的每一个特征map是链接到S2中的全部6个或者几个特征map的,表示本层的特征map是上一层提取到的特征map的不一样组合存在的一个方式是:C3的前6个特征图以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。而后的3个以不相邻的4个特征图子集为输入。最后一个将S2中全部特征图为输入。则:网络
可训练参数:6x(3x5x5+1)+6x(4x5x5+1)+3x(4x5x5+1)+1x(6x5x5+1)=1516app
链接数:10x10x1516=151600函数

C3与S2中前3个图相连的卷积结构以下图所示:编码

采起这种方式的缘由:spa
- 减小参数;
- 这种不对称的组合链接的方式有利于提取多种组合特征。
S4层-池化层(下采样层)
- 输入:10x10
- 采样区域:2x2
- 采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果经过sigmoid
- 采样种类:16
- 输出featureMap大小:5x5(10/2)
- 神经元数量:5x5x16=400
- 链接数:16x(2x2+1)55=2000
S4中每一个特征图的大小是C3中特征图大小的1/4。 3d
C5层-卷积层
- 输入:S4层的所有16个单元特征map(与s4全相连)
- 卷积核大小:5x5
- 卷积核种类:120
- 输出featureMap大小:1x1(5-5+1)
- 可训练参数/链接:120x(16x5x5+1)=48120
F6层-全链接层
- 输入:c5层的120维向量
- 计算方式:计算输入向量和权重向量之间的点积,再加上一个偏置,结果经过sigmoid函数输出。
- 可训练参数:84x(120+1)=10164
Output层-全链接层
Output层也是全链接层,共有10个节点,分别表明数字0到9,且若是节点i的值为0,则网络识别的结果是数字i。采用的是径向基函数(RBF)的网络链接方式。假设x是上一层的输入,y是RBF的输出,则RBF输出的计算方式是:orm
${y_i} = \sum\limits_j {{{({x_j} - {\omega _i}_j)}^2}}$
${{\omega _i}_j}$的值由i的比特图编码肯定,i从0到9,j取值从0到7*12-1。RBF输出的值越接近于0,则越接近于i,即越接近于i的ASCII编码图,表示当前网络输入的识别结果是字符i。该层有84x10=840个参数和链接。
以下图是识别数字3的过程:
