• 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之间才进行互相通信。

  • 相关阅读:
    Spring Cloud(面试必备):服务雪崩、降级与熔断
    SpringCloud 分布式事务解决方案
    2020年3月25java现场面试(有点料)
    SpringCloud Feign工作原理
    MySQL数据库引擎详解
    MySQL Hardware--CentOS 6修改CPU性能模式
    MySQL Hardware--网络测试
    MySQL Execution Plan--EXPLAIN用法
    MySQL Event--Event and EventScheduler
    MySQL Error--Error Code
  • 原文地址:https://www.cnblogs.com/34fj/p/9469784.html
Copyright © 2020-2023  润新知