CNN:LeNet-5

牧云@^-^@ 提交于 2020-02-05 10:14:44

LeNet-5共包含8层
![在这里插入图片描述](https://img-

C1层是一个卷积层,由6个特征图Feature Map构成。特征图中每个神经元与输入为55的邻域相连。特征图的大小为2828,这样能防止输入的连接掉到边界之外(32-5+1=28)。C1有156个可训练参数(每个滤波器55=25个unit参数和一个bias参数,一共6个滤波器,共(55+1)6=156个参数),共156(28*28)=122,304个连接。

S2层是一个下采样层,有6个1414的特征图。特征图中的每个单元与C1中相对应特征图的22邻域相连接。S2层每个单元的4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。每个单元的22感受野并不重叠,因此S2中每个特征图的大小是C1中特征图大小的1/4(行和列各1/2)。S2层有12(6(1+1)=12)个可训练参数和5880(1414(2*2+1)*6=5880)个连接。

C3层也是一个卷积层,它同样通过5x5的卷积核去卷积层S2,然后得到的特征map就只有10x10个神经元,但是它有16种不同的卷积核,所以就存在16个特征map了。 C3中每个特征图由S2中所有6个或者几个特征map组合而成。为什么不把S2中的每个特征图连接到每个C3的特征图呢?原因有2点。第一,不完全的连接机制将连接的数量保持在合理的范围内。第二,也是最重要的,其破坏了网络的对称性。由于不同的特征图有不同的输入,所以迫使他们抽取不同的特征(希望是互补的)。

例如,存在的一个方式是:C3的前6个特征图以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。然后的3个以不相邻的4个特征图子集为输入。最后一个将S2中所有特征图为输入。这样C3层有1516(6*(325+1)+6(425+1)+3(425+1)+(256+1)=1516)个可训练参数和151600(10101516=151600)个连接。

S4层是一个下采样层,由16个55大小的特征图构成。特征图中的每个单元与C3中相应特征图的22邻域相连接,跟C1和S2之间的连接一样。S4层有32个可训练参数(每个特征图1个因子和一个偏置16*(1+1)=32)和2000(16*(2*2+1)55=2000)个连接。

C5层是一个卷积层,有120个特征图。每个单元与S4层的全部16个单元的55邻域相连。由于S4层特征图的大小也为55(同滤波器一样),故C5特征图的大小为11(5-5+1=1):这构成了S4和C5之间的全连接。之所以仍将C5标示为卷积层而非全相联层,是因为如果LeNet-5的输入变大,而其他的保持不变,那么此时特征图的维数就会比11大。C5层有48120(120*(1655+1)=48120由于与全部16个单元相连,故只加一个偏置)个可训练连接。

F6层有84个单元(之所以选这个数字的原因来自于输出层的设计),与C5层全相连。有10164(84*(120*(1*1)+1)=10164)个可训练参数。如同经典神经网络,F6层计算输入向量和权重向量之间的点积,再加上一个偏置。然后将其传递给sigmoid函数产生单元i的一个状态。

最后,输出层由欧式径向基函数(Euclidean Radial Basis Function)单元组成,每类一个单元,每个有84个输入。

1、输入层:N个32x32的训练样本

输入图像大小为32x32,比MNIST数据库中的字母大,这样做的原因是希望潜在的明显特征,如笔画断点或角点能够出现在最高层特征监测子感受野的中心。

2、C1层

输入图像大小:32x32
卷积核大小:5x5
卷积核个数:6
输出特征图数量:6
输出特征图大小:28x28(32-5+1)
神经元数量:4707(28x28x6)
连接数:122304((28x28x5x5x6)+(28x28x6))
可训练参数:156(5x5x6+6,权值+偏置)
3、S2层

输入图像大小:(28x28x6)
卷积核大小:2x2
卷积核个数:6
输出特征图数量:6
输出特征图大小:14x14(28/2,28/2)
神经元数量:1176(14x14x6)
连接数:5880((2x2x14x14x6)+(14x14x6))
可训练参数:12(1x6+6,权值+偏置)
备注:S2层每个单元的4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid函数计算。可训练系数和偏置控制着sigmoid函数的非线性程度。

如果系数比较小,那么运算近似于线性运算,下采样相当于模糊图像。

如果系数比较大,根据偏置的大小下采样可以被看成是有噪声的“或”运算或者有噪声的“与”运算。

每个单元的2*2感受野并不重叠,因此S2中每个特征图的大小是C1中特征图大小的1/4(行和列各1/2)。

4、C3层

输入图像大小:(14x14x6)
卷积核大小:5x5
卷积核个数:16
输出特征图数量:16
输出特征图大小:10x10(14-5+1)
神经元数量:1600(10x10x16)
连接数:151600(1516x10x10)
可训练参数:1516
备注:C3层也是一个卷积层,通过5x5的卷积核去卷积S2层,然后得到的特征图map就有10x10个神经元,但是有16种不同的卷积核,就存在16个不同的特征map。

C3中每个特征图由S2中的所有6个或几个特征图组合而成,为什么不把S2中的所有特征图都连接到C3的特征图呢:

第一,不完全的连接机制将连接的数量保持在合理的范围内
第二,也是最重要的,这样一来就可以破坏网络的对称性,由于不同的特征图有不同的输入,所以迫使他们抽取不同的特征。
5、S4层

输入图像大小:(10x10x16)
卷积核大小:2x2
卷积核个数:16
输出特征图数量:16
输出特征图大小:5x5x16
神经元数量:400(5x5x16)
连接数:2000((2x2x5x5x16)+(5x5x16))
可训练参数:32((1+1)x16)
备注:S4是一个下采样层,由16个5x5大小的特征图构成,特征图的每个单元与C3中相应的特征图的2x2邻域相连,S4层有32个可训练参数(每个特征图1个因子和一个偏置)和2000个连接。

6、C5层

输入图像大小:5x5x16
卷积核大小:5x5
卷积核个数:120
输出特征图数量:120
输出特征图大小:1X1(5-5+1)
神经元数量:120(1x120)
连接数:48120(5x5x16x120x1+120x1)
可训练参数:48120(5x5x16x120+120)
备注:C5层是一个卷积层,有120个特征图,每个单元与S4层的全部16个单元的5x5邻域相连,构成了S4和C5的全连接,之所以仍将C5标识为卷积层而非全连接层是因为如果LeNet-5的输入变大,而其他的保持不变,那么此时特征图的维数就会比1x1大。

7、F6层

输入图像大小:(1x1x120)
卷积核大小:1x1
卷积核个数:84
输出特征图数量:1
输出特征图大小:84
神经元数量:84
连接数:10164(120x84+84)
可训练参数:10164(120x84+84)
备注:F6有84个单元(之所以选择84是源于输出层的设计),与C5层相连,有10164个可训练参数,类似经典的全连接神经网络,F6层计算输入向量和权重向量之间的点积,再加上一个偏置,之后将其传递给sigmoid函数产生一个单元i的状态。

8、output层

输入图像大小:1x84
输出特征图数量:1x10
C1层是一个卷积层,由6个特征图Feature Map构成。特征图中每个神经元与输入为55的邻域相连。特征图的大小为2828,这样能防止输入的连接掉到边界之外(32-5+1=28)。C1有156个可训练参数(每个滤波器55=25个unit参数和一个bias参数,一共6个滤波器,共(55+1)6=156个参数),共156(28*28)=122,304个连接。

S2层是一个下采样层,有6个1414的特征图。特征图中的每个单元与C1中相对应特征图的22邻域相连接。S2层每个单元的4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。每个单元的22感受野并不重叠,因此S2中每个特征图的大小是C1中特征图大小的1/4(行和列各1/2)。S2层有12(6(1+1)=12)个可训练参数和5880(1414(2*2+1)*6=5880)个连接。

C3层也是一个卷积层,它同样通过5x5的卷积核去卷积层S2,然后得到的特征map就只有10x10个神经元,但是它有16种不同的卷积核,所以就存在16个特征map了。 C3中每个特征图由S2中所有6个或者几个特征map组合而成。为什么不把S2中的每个特征图连接到每个C3的特征图呢?原因有2点。第一,不完全的连接机制将连接的数量保持在合理的范围内。第二,也是最重要的,其破坏了网络的对称性。由于不同的特征图有不同的输入,所以迫使他们抽取不同的特征(希望是互补的)。

例如,存在的一个方式是:C3的前6个特征图以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。然后的3个以不相邻的4个特征图子集为输入。最后一个将S2中所有特征图为输入。这样C3层有1516(6*(325+1)+6(425+1)+3(425+1)+(256+1)=1516)个可训练参数和151600(10101516=151600)个连接。

S4层是一个下采样层,由16个55大小的特征图构成。特征图中的每个单元与C3中相应特征图的22邻域相连接,跟C1和S2之间的连接一样。S4层有32个可训练参数(每个特征图1个因子和一个偏置16*(1+1)=32)和2000(16*(2*2+1)55=2000)个连接。

C5层是一个卷积层,有120个特征图。每个单元与S4层的全部16个单元的55邻域相连。由于S4层特征图的大小也为55(同滤波器一样),故C5特征图的大小为11(5-5+1=1):这构成了S4和C5之间的全连接。之所以仍将C5标示为卷积层而非全相联层,是因为如果LeNet-5的输入变大,而其他的保持不变,那么此时特征图的维数就会比11大。C5层有48120(120*(1655+1)=48120由于与全部16个单元相连,故只加一个偏置)个可训练连接。

F6层有84个单元(之所以选这个数字的原因来自于输出层的设计),与C5层全相连。有10164(84*(120*(1*1)+1)=10164)个可训练参数。如同经典神经网络,F6层计算输入向量和权重向量之间的点积,再加上一个偏置。然后将其传递给sigmoid函数产生单元i的一个状态。

最后,输出层由欧式径向基函数(Euclidean Radial Basis Function)单元组成,每类一个单元,每个有84个输入。

1、输入层:N个32x32的训练样本

输入图像大小为32x32,比MNIST数据库中的字母大,这样做的原因是希望潜在的明显特征,如笔画断点或角点能够出现在最高层特征监测子感受野的中心。

2、C1层

输入图像大小:32x32
卷积核大小:5x5
卷积核个数:6
输出特征图数量:6
输出特征图大小:28x28(32-5+1)
神经元数量:4707(28x28x6)
连接数:122304((28x28x5x5x6)+(28x28x6))
可训练参数:156(5x5x6+6,权值+偏置)
3、S2层

输入图像大小:(28x28x6)
卷积核大小:2x2
卷积核个数:6
输出特征图数量:6
输出特征图大小:14x14(28/2,28/2)
神经元数量:1176(14x14x6)
连接数:5880((2x2x14x14x6)+(14x14x6))
可训练参数:12(1x6+6,权值+偏置)
备注:S2层每个单元的4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid函数计算。可训练系数和偏置控制着sigmoid函数的非线性程度。

如果系数比较小,那么运算近似于线性运算,下采样相当于模糊图像。

如果系数比较大,根据偏置的大小下采样可以被看成是有噪声的“或”运算或者有噪声的“与”运算。

每个单元的2*2感受野并不重叠,因此S2中每个特征图的大小是C1中特征图大小的1/4(行和列各1/2)。

4、C3层

输入图像大小:(14x14x6)
卷积核大小:5x5
卷积核个数:16
输出特征图数量:16
输出特征图大小:10x10(14-5+1)
神经元数量:1600(10x10x16)
连接数:151600(1516x10x10)
可训练参数:1516
备注:C3层也是一个卷积层,通过5x5的卷积核去卷积S2层,然后得到的特征图map就有10x10个神经元,但是有16种不同的卷积核,就存在16个不同的特征map。

C3中每个特征图由S2中的所有6个或几个特征图组合而成,为什么不把S2中的所有特征图都连接到C3的特征图呢:

第一,不完全的连接机制将连接的数量保持在合理的范围内
第二,也是最重要的,这样一来就可以破坏网络的对称性,由于不同的特征图有不同的输入,所以迫使他们抽取不同的特征。
5、S4层

输入图像大小:(10x10x16)
卷积核大小:2x2
卷积核个数:16
输出特征图数量:16
输出特征图大小:5x5x16
神经元数量:400(5x5x16)
连接数:2000((2x2x5x5x16)+(5x5x16))
可训练参数:32((1+1)x16)
备注:S4是一个下采样层,由16个5x5大小的特征图构成,特征图的每个单元与C3中相应的特征图的2x2邻域相连,S4层有32个可训练参数(每个特征图1个因子和一个偏置)和2000个连接。

6、C5层

输入图像大小:5x5x16
卷积核大小:5x5
卷积核个数:120
输出特征图数量:120
输出特征图大小:1X1(5-5+1)
神经元数量:120(1x120)
连接数:48120(5x5x16x120x1+120x1)
可训练参数:48120(5x5x16x120+120)
备注:C5层是一个卷积层,有120个特征图,每个单元与S4层的全部16个单元的5x5邻域相连,构成了S4和C5的全连接,之所以仍将C5标识为卷积层而非全连接层是因为如果LeNet-5的输入变大,而其他的保持不变,那么此时特征图的维数就会比1x1大。

7、F6层

输入图像大小:(1x1x120)
卷积核大小:1x1
卷积核个数:84
输出特征图数量:1
输出特征图大小:84
神经元数量:84
连接数:10164(120x84+84)
可训练参数:10164(120x84+84)
备注:F6有84个单元(之所以选择84是源于输出层的设计),与C5层相连,有10164个可训练参数,类似经典的全连接神经网络,F6层计算输入向量和权重向量之间的点积,再加上一个偏置,之后将其传递给sigmoid函数产生一个单元i的状态。

8、output层

输入图像大小:1x84
输出特征图数量:1x10

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!