卷积神经网络 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之间才进行互相通信。

CNN网络参数的更多相关文章

  1. AI:IPPR的数学表示-CNN结构/参数分析

    前言:CNN迎接多类的挑战 特定类型的传统PR方法特征提取的方法是固定的,模式函数的形式是固定的,在理论上产生了特定的"局限性" 的,分类准确度可以使用PAC学习理论的方法计算出来 ...

  2. CNN网络介绍与实践:王者荣耀英雄图片识别

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者介绍:高成才,腾讯Android开发工程师,2016.4月校招加入腾讯,主要负责企鹅电竞推流SDK.企鹅电竞APP的功能开发和技术优化工作 ...

  3. 【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络Vgg

    上周我们讲了经典CNN网络AlexNet对图像分类的效果,2014年,在AlexNet出来的两年后,牛津大学提出了Vgg网络,并在ILSVRC 2014中的classification项目的比赛中取得 ...

  4. 【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络AlexNet

    上周我们用PaddlePaddle和Tensorflow实现了图像分类,分别用自己手写的一个简单的CNN网络simple_cnn和LeNet-5的CNN网络识别cifar-10数据集.在上周的实验表现 ...

  5. CNN超参数优化和可视化技巧详解

    https://zhuanlan.zhihu.com/p/27905191 在深度学习中,有许多不同的深度网络结构,包括卷积神经网络(CNN或convnet).长短期记忆网络(LSTM)和生成对抗网络 ...

  6. 深度学习方法(七):最新SqueezeNet 模型详解,CNN模型参数降低50倍,压缩461倍!

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 继续前面关于深度学习CNN经典模型的 ...

  7. 积神经网络(CNN)的参数优化方法

    http://www.cnblogs.com/bonelee/p/8528863.html 积神经网络的参数优化方法——调整网络结构是关键!!!你只需不停增加层,直到测试误差不再减少. 积神经网络(C ...

  8. 数据挖掘入门系列教程(十一点五)之CNN网络介绍

    在前面的两篇博客中,我们介绍了DNN(深度神经网络)并使用keras实现了一个简单的DNN.在这篇博客中将介绍CNN(卷积神经网络),然后在下一篇博客中将使用keras构建一个简单的CNN,对cifa ...

  9. 数据挖掘入门系列教程(十二)之使用keras构建CNN网络识别CIFAR10

    简介 在上一篇博客:数据挖掘入门系列教程(十一点五)之CNN网络介绍中,介绍了CNN的工作原理和工作流程,在这一篇博客,将具体的使用代码来说明如何使用keras构建一个CNN网络来对CIFAR-10数 ...

随机推荐

  1. 《WAP》第一次作业:团队亮相

    一.队名:WAP! 二.团队成员组长 组员 : 201571030302/杜有海 201571030327/乌勒扎 201571030304/郝明宇 201571030318/马麒 组长: 20157 ...

  2. 查找一个Class到底在那一个jar文件里

    整理自己的一些笔记,发觉这个命令 ,看起来是用来找一个Class到底在那一个jar文件里的. 虽然没有再测一下,估计是好使的. 先在博客园里记下来,防止自己忘掉. findstr /S /M org. ...

  3. sql语句in

    在今天之前sql一直用in语句,知道今天遇到一张数据量很大的表查了三分钟才查出来,这才意识到数据库优化有多重要.作为一名开发人员,首先从优化sql语句开始. 之前用in写sql是这样的 select ...

  4. 如何写一篇好的技术博客or技术文档(转链接)

    如何写一篇好的技术文档http://yunli.blog.51cto.com/831344/168352 程序员怎样才能写出一篇好的博客或者技术文章?http://www.zhihu.com/ques ...

  5. ps怎么替换颜色

    1.图像--->>调整--->>替换颜色

  6. IOS-更优雅地使用Static Cell

    更优雅地使用Static Cell 在项目开发中,经常会用到static cell来实现一些固定的列表界面(如:个人中心等),在static cell被点击时,如何判断被点击的cell是哪一个,有什么 ...

  7. VAE--就是AutoEncoder的编码输出服从正态分布

    花式解释AutoEncoder与VAE 什么是自动编码器 自动编码器(AutoEncoder)最开始作为一种数据的压缩方法,其特点有: 1)跟数据相关程度很高,这意味着自动编码器只能压缩与训练数据相似 ...

  8. [ccf 4] 网络延时

    网络延时 问题描述 给定一个公司的网络,由n台交换机和m台终端电脑组成,交换机与交换机.交换机与电脑之间使用网络连接.交换机按层级设置,编号为1的交换机为根交换机,层级为      1.他的交换机都连 ...

  9. 改造 Ace Admin 模板的 ace_tree 组件的 folderSelect 样式

    *注:我用的Ace Admin版本为1.3.4 Ace Admin 是一个轻量,功能丰富,HTML5.响应式.支持手机及平板电脑上浏览的优秀管理后台模板. 关于tree的使用,html文件夹下tree ...

  10. 更新.xsd后,rdlc 数据源更新不了