CNN网络参数

卷积神经网络 LeNet-5各层参数详解

LeNet论文阅读:LeNet结构以及参数个数计算

 
 

LeNet-5共有7层,不包含输入,每层都包含可训练参数;每个层有多个Feature Map,每个FeatureMap通过一种卷积滤波器提取输入的一种特征,然后每个FeatureMap有多个神经元。

1. C1是一个卷积层

输入图片:32*32

卷积核大小:5*5

卷积核种类:6

输出featuremap大小:28*28 (32-5+1)

神经元数量:28*28*6

可训练参数:(5*5+1)*6(其中5x5对应kernel size,+1为bias,6为feature map 数目)

连接数:(5*5+1)*6*28*28 (卷积核大小(每个格子一个参数)+bias)*卷积核种类*输出featureMap大小

2. S2层是一个下采样层

输入:28*28

采样区域:2*2

采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid

采样种类:6

输出featureMap大小:14*14(28/2)

神经元数量:14*14*6

可训练参数:2*6(和的权+bias) (因为LeNet-5采用的sigmoid(a*average(x)+b)作为池化函数) 

连接数:(2*2+1)*6*14*14 (采样区域(每个格子一个参数)+bias)*卷积核种类*输出featureMap大小

一个filter对应下面一个通道

S2中每个特征图的大小是C1中特征图大小的1/4

3. C3层也是一个卷积层

输入:S2中所有6个或者几个特征map组合

卷积核大小:5*5

卷积核种类:16

输出featureMap大小:10*10

C3中的每个特征map是连接到S2中的所有6个或者几个特征map的,表示本层的特征map是上一层提取到的特征map的不同组合

存在的一个方式是:C3的前6个特征图以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。然后的3个以不相邻的4个特征图子集为输入。最后一个将S2中所有特征图为输入。

则:可训练参数:6*(3*25+1)+6*(4*25+1)+3*(4*25+1)+(25*6+1)=1516 

括号内部为kernel_size x kernel_size x feature_map_num + bias_num,表示从feature_map_size卷积得到的feature map所需要的参数个数;括号外为相应得到feature map的数目。 

连接数:10*10*1516=151600 其中1516为参数个数,10为新生成的feature map的size。

4. S4层是一个下采样层

输入:10*10

采样区域:2*2

采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid

采样种类:16

输出featureMap大小:5*5(10/2)

神经元数量:5*5*16=400

可训练参数:2*16=32(和的权+bias)

连接数:16*(2*2+1)*5*5=2000

S4中每个特征图的大小是C3中特征图大小的1/4

5. C5层是一个卷积层

输入:S4层的全部16个单元特征map(与s4全相连)

卷积核大小:5*5

卷积核种类:120

输出featureMap大小:1*1(5-5+1)

可训练参数/连接:120*(16*5*5+1)=48120

链接个数等于参数个数,因为新生成feature map的size为1

6. F6层全连接层

输入:c5 120维向量

计算方式:计算输入向量和权重向量之间的点积,再加上一个bias,结果通过sigmoid函数

可训练参数:84*(120+1)=10164

AlexNet层级分析

由作者的原文可知,AlexNet模型在训练时使用了两个GPU,所以就出现了一些参数为两个GPU共享,一些参数是GPU独享。在建立此训练模型前,先分析各层的参数关系。

AlexNet模型共有5个卷积层,3个全连接层,前两个卷积层和第五个卷积层有pool池化层,其他两个卷积层没有池化。

第一卷积层:

由AlexNet架构图,第一卷积层的卷积核有96个(两个GPU各用48个),卷积核的尺度为11*11*3(3为RGB通道数),步长stride为4。生成的卷积特征图单元数为55*55*48*2,每个特征图尺度为55*55,由此可知输入图像尺度为227*227(55(单向尺度)*4(步长) + (11(卷积核尺度)-4(步长)) = 227)。因此输入图像单元数为227*227*3*1。

第一池化层:

输入单个特征图尺度为55*55,池化尺度3*3,步长为2,输出池化特征图尺度为27*27((55(单向尺度)-3(池化尺度))/2(步长)+1 = 27)。特征图单元数为27*27*48*2.

第二卷积层:

由AlexNet架构图,卷积核有256个(两个GPU各128个,同时各作用于各GPU内的第一池化层的输出),卷积核尺度5*5*3,步长为1,生成卷积特征图单元数为27*27*128*2,每个特征图尺度为27*27,由此计算输入特征图尺度为31*31(27(单向尺度)*1(步长)+(5(卷积核尺度)-1(步长))= 31)。因此输入特征图单元数为31*31*96。

第二池化层:

输入单个特征图尺度为27*27,池化尺度3*3,步长为2,输出池化特征图尺度为13*13((27(单向尺度)-3(池化尺度))/2(步长)+ 1 = 13)。特征图单元数为13*13*128*2.

第三卷积层:

由AlexNet架构图,卷积核有384个(两个GPU各192个,同时需要共享各自GPU第二池化层的输出),卷积核尺度为3*3*3,步长为1,生成卷积特征图单元数为13*13*192*2,每个特征图尺度为13*13,由此计算输入特征图尺度为15*15(13(单向尺度)*1(步长)+(3(卷积核尺度)-1(步长))=15)。因此输入特征图单元数为15*15*256。

第四卷积层:

由AlexNet架构图,卷积核有384个(两个GPU各192个,同时不共享各自GPU内的第三卷积层输出),卷积核尺度为3*3*3,步长为1,生成卷积特征图单元数为13*13*192*2,每个特征图尺度为13*13,由此计算输入特征图尺度为15*15(13(单向尺度)*1(步长)+(3(卷积核尺度)-1(步长))=15)。因此输入特征图单元数为15*15*384。

第五卷积层:

由AlexNet架构图,卷积核有256个(两个GPU各128个,同时不共享各自GPU内的第四卷积层输出),卷积核尺度为3*3*3,步长为1,生成卷积特征图单元数为13*13*128*2,每个特征图尺度为13*13,由此计算输入特征图尺度为15*15(13(单向尺度)*1(步长)+(3(卷积核尺度)-1(步长))=15)。因此输入特征图单元数为15*15*384。

第五池化层:

输入单个特征图尺度13*13,池化尺度3*3,步长为2,输出池化特征图尺度为6*6((13(单向尺度)-3(池化尺度))/2(步长)+1 = 6)。特征图单元数为6*6*256.

第一全连接层:

输入特征图单元数为6*6*256,输出特征图单元数为4096,全连接参数个数为6*6*256*4096.

第二全连接层:

输入特征图单元数4096,输出特征图单元数为4096,全连接参数个数为4096*4096.

第三全连接层:

即输出层,输入特征图单元数为4096,输出特征图单元数为1000,全连接参数个数为4096*1000.

 

经典CNN模型计算量与内存需求分析

表1 CNN经典模型的内存,计算量和参数数量对比

 

AlexNet

VGG16

Inception-v3

模型内存(MB)

>200

>500

90-100

参数(百万)

60

138

23.2

计算量(百万)

720

15300

5000

 

1. CNN模型具体分析(以AlexNet网络模型为例)

1.1 网络结构

 

 

图1 AlexNet网络结构

 

AlexNet有5个卷积层和3个全连接层

C1:96×11×11×3 (卷积核个数/宽/高/深度)               34848个

C2:256×5×5×48(卷积核个数/宽/高/深度)           307200个

C3:384×3×3×256(卷积核个数/宽/高/深度)         884736个

C4:384×3×3×192(卷积核个数/宽/高/深度)         663552个

C5:256×3×3×192(卷积核个数/宽/高/深度)         442368个

R1:4096×6×6×256(卷积核个数/宽/高/深度)       37748736个

R2:4096×4096                                                        16777216个

R3:4096×1000                                                        4096000个

共6000万个参数

 

1.2 AlexNet模型内存大小计算

6000万(个参数)×32位(float32)=19.2亿位≈228.88MB

 

1.3 AlexNet模型计算力消耗

 

图2 AlexNet模型每层每秒浮点运算次数及参数数量

 

1.4 AlexNet网络模型配置

AlexNet网络模型获得了2012年ImageNet比赛的冠军。AlexNet使用两块GTX580显卡进行训练,两块GPU各训练网络的一部分,在第二个卷积层和全连接层两块GPU之间才进行互相通信。

posted @ 2018-08-13 17:45 喵喵帕斯 阅读(...) 评论(...) 编辑 收藏