精华内容
下载资源
问答
  • keras环境下,搭建卷积神经网络,通过资料理解,可以掌握卷积神经网络运行机制以及每层训练参数的个数的计算方法。
  • 卷积神经网络参数量和计算量的计算

    万次阅读 多人点赞 2019-08-15 15:49:08
    0 前言 我们在设计一个CNN网络时,通常要考虑两个事情,一个是这个网络需要的计算量有多大,一个是这个模型的...参数量以参数个数为单位,要计算内存或显存的,用参数量乘以每个参数所占的字节数即可。 1 计算量 ...

    0 前言

    我们在设计一个CNN网络时,通常要考虑两个事情,一个是这个网络需要的计算量有多大,一个是这个模型的参数量有多少。前者决定了网络训练的快慢(硬件设备确定的情况),后者决定了计算设备需要多大的内存或显存。
    本文CNN的计算量以计算机做乘加次数为单位,即完成某个操作,需要执行多少次乘法和加法操作。参数量以参数个数为单位,要计算内存或显存的,用参数量乘以每个参数所占的字节数即可。

    1 计算量

    对于输入特征图f=(B,H,W,C),卷积核张量kernel=(K,S,C,O),其中,B是batch size大小,H,W,C分别是输入特征图的高,宽和通道数,K,S,C,O分别是卷积操作时,卷积核的大小,移动步长(stride),特征图输入通道及输出通道数。先分开来看一下一个数据样本每一小步需要的计算次数:
    1. 首先一次卷积的计算量:
    一个k×kk\times k的卷积,执行一次卷积操作,需要k×kk\times k次乘法操作(卷积核中每个参数都要和特征图上的元素相乘一次),k×k1k\times k-1次加法操作(将卷积结果,k×kk\times k个数加起来)。所以,一次卷积操作需要的乘加次数:(K×K)+(K×K1)=2×K×K1(K \times K)+(K \times K-1)=2\times K \times K-1
    2. 在一个特征图上执行卷积需要进行卷积的次数:
    在一个特征图上需要执行的卷积次数:((HK+Ph)S+1)((WK+Pw)S+1)Ph,Pw(\frac{(H-K+P_h)}{S}+1)*(\frac{(W-K+P_w)}{S}+1),P_h,P_w表示在高和宽方向填充的像素,此处假定了宽高方向滑动步长和核的宽高是一样,若不同,调整一下值即可。若不能整除,可向下取整。
    3. C个特征图上进行卷积运算的次数
    C个输入特征图上进行卷积运算的次数为C
    4. 输出一个特征图通道需要的加法次数
    在C个输入特征图上进行卷积之后需要将卷积的结果相加,得到一个输出特征图上卷积结果,C个相加需要C-1次加法,所以输出一个特征图需要的计算量是
    (C1)×C×((HK+Ph)S+1)((WK+Pw)S+1)×(2×K×K1)(C-1) \times C \times (\frac{(H-K+P_h)}{S}+1)*(\frac{(W-K+P_w)}{S}+1) \times(2 \times K \times K-1)

    5. 输出O个特征图需要计算的次数
    上面的结果想乘的到的是输出一个通道需要的计算量,需要输出O个通道,计算量还要乘以O,所以输出O个特征图需要的计算量为
    O×(C1)×C×((HK+Ph)S+1)((WK+Pw)S+1)×(2×K×K1)O \times (C-1) \times C \times (\frac{(H-K+P_h)}{S}+1)*(\frac{(W-K+P_w)}{S}+1) \times(2 \times K \times K-1)
    6. 一个batch的样本需要的计算量
    上面是一个样本的数据需要的计算量,每个样本都需要就行卷积运算,所以一个batch的样本需要的计算量为:
    B×O×(C1)×C×((HK+Ph)S+1)((WK+Pw)S+1)×(2×K×K1)B \times O \times (C-1) \times C \times (\frac{(H-K+P_h)}{S}+1)*(\frac{(W-K+P_w)}{S}+1) \times(2 \times K \times K-1)
    上面的式子得到的是卷积神经网路的一层所需要的计算量,将每层的计算量相加就可以得到整个网络的计算量。通常包含乘加的操作有Pool,Relu,BN(含有除法),卷积等。一般都是卷积操作占主要。

    2 参数量

    CNN网络的参数量和特征图的尺寸无关,仅和卷积核的大小,偏置及BN有关,对于卷积张量kernel=(K, S, C, O),权重参数量为KKCOK*K*C*O,偏置参数量为O,如果使用了BN,那么还有两个可学习参数α,β\alpha, \beta,参数量都是O,总共2*O,,综上,该卷积层所有的参数量为:
    KKCO+3OK*K*C*O+3*O
    需要注意的是,上面计算的仅仅是模型的参数量,若要计算模型实际需要多少显存,还要考虑特征图的大小,因为每一层卷积的输出都需要缓存,还要BN计算出来的均值和偏差也需要缓存,权重的梯度也需要缓存。通常模型参数所占用的显存比例很小。

    参考文章:CNN中计算量和参数的计算方法
    主要的内容参考上面的博客,自己梳理了一下,认为这样写更清晰一些。

    展开全文
  • keras搭建卷积神经网络构建模型参数个数计算方式 计算过程 (1)用一十二个333的卷积核对三通道图像1501503进行卷积。每一个卷积核有一个偏置。则此层参数个数为(333+1)12=336。 (2)经过上面的操作,生成了一...

    keras搭建卷积神经网络构建模型参数个数计算方式

    在这里插入图片描述

    计算过程
    (1)用一十二个3x3x3的卷积核对三通道图像150x150x3进行卷积。每一个卷积核有一个偏置。则此层参数个数为(3x3x3+1)x12=336。
    (2)经过上面的操作,生成了一十二幅尺寸为150x150x1的图像。则用五个3x3x12的卷积核对单通道图像150x150x1进行卷积。每个卷积核有一个偏置。此层参数的个数为(3x3x12+1)x5=545。(3)卷积后,进行padding补零。后得到五个75x75的单通道的灰度图像。
    (4)将图像的每一个像素看成一个神经元,然后平铺开来有神经元个数75x75x5=28125个。(5)上面的28125个神经元与第一个dense层的128个神经元全链接,有未知参数个数(75x75x5+1)x128=3600128个。
    (6)上面的128个神经元与最后一个dense层的十个输出神经元全连接,有未知参数个数(128+1)x10=1290个。
    (7)因此,总共的未知参数个数为336+545+3600128+1290=3602299个。

    计算结果

    在这里插入图片描述

    展开全文
  • 一、卷积神经网络参数计算 CNN一牛逼的地方就在于通过感受野和权值共享减少了神经网络需要训练的参数的个数,所谓权值共享就是同一Feature Map中神经元权值共享,该Feature Map中的所有神经元使用同一权值。...

    一、卷积神经网络参数计算

    CNN一个牛逼的地方就在于通过感受野和权值共享减少了神经网络需要训练的参数的个数,所谓权值共享就是同一个Feature Map中神经元权值共享,该Feature Map中的所有神经元使用同一个权值。因此参数个数与神经元的个数无关,只与卷积核的大小及Feature Map的个数相关。但是共有多少个连接个数就与神经元的个数相关了,神经元的个数也就是特征图的大小。

           下面以最经典的LeNet-5例子来逐层分析各层的参数及连接个数。

             

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

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

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

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

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

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

     

    二、神经网络时间复杂度和空间复杂度(参数量计算和计算量计算)

     

    三、卷积层输出尺寸计算

    先定义几个参数

    • 输入图片大小 W×W
    • Filter大小 F×F
    • 步长 S
    • padding的像素数 P

    则输出为N*N,其中N = (W − F + 2P )/S+1。具体计算如下:

    卷积中的特征图大小计算方式有两种,分别是‘VALID’和‘SAME’,卷积和池化都适用,除不尽的结果都向上取整。

    1.如果计算方式采用'VALID',则:

     

    其中为输出特征图的大小,为输入特征图的大小,F为卷积核大小,stride为卷积步长。

    2.如果计算方式采用'SAME',输出特征图的大小与输入特征图的大小保持不变,

     

    其中padding为特征图填充的圈数。若采用'SAME'方式,kernel_size=1时,padding=0;kernel_size=3时,padding=1;kernel_size=5时,padding=3,以此类推。

     

    转自:

    https://blog.csdn.net/gloriazhang2013/article/details/71426871

    https://blog.csdn.net/gubenpeiyuan/article/details/81561262

    https://blog.csdn.net/HelloZEX/article/details/81109136

    转载于:https://www.cnblogs.com/CJT-blog/p/10562819.html

    展开全文
  • 参考:https://www.cnblogs.com/hejunlin1992/p/7624807.html举例1: 比如输入是一32x32x3的图像,3表示RGB三通道,每filter/kernel是5x5x3,一个卷积核产生一feature map,下图中,有65x5x3的卷积核,故...

    参考:

    https://www.cnblogs.com/hejunlin1992/p/7624807.html

    举例1:

      比如输入是一个32x32x3的图像,3表示RGB三通道,每个filter/kernel是5x5x3,一个卷积核产生一个feature map,下图中,有6个5x5x3的卷积核,故输出6个feature map(activation map),大小即为28x28x6。

           下图中,第二层到第三层,其中每个卷积核大小为5x5x6,这里的6就是28x28x6中的6,两者需要相同,即每个卷积核的“层数”需要与输入的“层数”一致。有几个卷积核,就输出几个feature map,下图中,与第二层作卷积的卷积核有10个,故输出的第三层有10个通道。

    举例2:

      NxN大小的输入(暂时不考虑通道数),与FxF大小的卷积核(暂时不考虑个数)做卷积,那么输出大小为多大?计算公式为:(N - F) / stride + 1,其中stride为做卷积是相邻卷积核的距离。

    举例3:

      当输入为7x7大小,卷积核为3x3,stride=1,在7x7周围补上一圈0(pad=1个像素),那么输出大小为多大?

    是7x7。

    举例3:

           输入为32x32x3,卷积核大小为5x5,总共有10个卷积核,做卷积的时候stride=1,pad=2,那么这一层总共含有多少参数?

           每个卷积核含有的参数个数为:5*5*3 + 1 = 76,其中1是偏置bias,由于有10个卷积核,故总参数为76*10=760。

    总结:

    其中,卷积核的数量K一般是2的整数次幂,这是因为计算方便(计算机计算2^n比较快)

     

     

    关于池化层的参数计算:

     


    展开全文
  • 卷积后卷积层大小 W2= (W1-F+2P)/S +1 ... 即(卷积核宽x卷积核高)x卷积核的个数 + 偏差个数(即卷积核的个数,每一层有一个bias) Padding的大小 P = (F-S)/2 即(卷积核的宽度-步长)的一半 ...
  • 卷积神经网络是一多层的神经网络,每层由多二维平面组成,而每平面由多独立神经元组成。  图:卷积神经网络的概念示范:输入图像通过和三可训练的滤波器和可加偏置进行卷积,滤波过程如图一,卷积后在C1...
  • 神经网络参数个数计算规则

    千次阅读 2020-04-03 19:06:27
    参数个数计算是搭建神经网络的关键,错误的参数个数,将直接导致神经网络运算的崩溃,这里简要记录下,供大家参考: 已知:  输入图像尺寸:m×n×c(c:通道数)  卷积核尺寸:f×f×c  padding 大小:p  ...
  • 今天,我们来分享一篇博文,关于如何计算图像张量的大小以及确定卷积神经网络各层参数个数的公式。假设我们已经熟悉了卷积神经网络相关概念。在这里,我们把张量定义为有任意通道数的图像。 我们将用AlexNet作为例子...
  • 本篇文章来自于learnopencv....在这篇文章中,我们分享了一些公式来计算张量(图像)的大小和卷积神经网络(CNN)中每一层的参数个数。 此帖子不定义CNN中使用的基本术语...
  • 其实很简单,产生一输出通道需要与输入通道相当的卷积模板(这为一组产生一输出通道),如下图所示 对应的卷积模板处理对应的输入通道,以上面的例子来说,第一个卷积模板处理第一输入通道产生一h*...
  •  图:卷积神经网络的概念示范:输入图像通过和三可训练的滤波器和可加偏置进行卷积,滤波过程如图一,卷积后在C1层产生三特征映射图,然后特征映射图中每组的四像素再进行求和,加权值,加偏置,通过一...
  • 卷积神经网络的卷积核大小、卷积层数、每层map个数都是如何确定下来的呢?看到有些答案是刚开始随机初始化卷积核大小,卷积层数和map个数是根据经验来设定的,但这个里面应该是有深层次原因吧,比如下面的手写字卷积...
  • 输入通道是M,输出通道是N,输出特征图大小是fxf,那么如上图所示,我用和输入通道相同数量的卷积核去卷原始图像,会得到与原始图像输入通道相同数量的像素值,将这些像素值加权求和得到输出的一通道的一...
  • 卷积神经网络的卷积核大小、卷积层数、每层map个数都是如何确定下来的呢?看到有些答案是刚开始随机初始化卷积核大小,卷积层数和map个数是根据经验来设定的,但这个里面应该是有深层次原因吧,比如下面的手写字卷积...
  • 文章目录神经网络CNN卷积神经网络CNN的由来局部感受野共享权重池化CNN的结构光栅化LeNet5详解LeNet5-C1层LeNet5-S2层LeNet5-C3层LeNet5-S4层LeNet5-C5层LeNet5-F6层LeNet5-OUTPUT层计算公式LeNet5实战定义网络模型...
  • 每个卷积层可视为三元组[kernel_size, stride, dilation], ...总共有4个block,每个block的layer个数为:[3, 4, 6, 3]。 以最后一个block的参数为例,有[[3, 1, 1], [3, 1, 2], [3, 1, 4]]。 感受野计算代码如...
  • 卷积神经网络之AlexNet 2012年AlexNet横空出世,赢得了ImageNet2012图像识别挑战赛。首次证明了学习到的特征可以超越手工设计的特征。 AlexNet模型 AlexNet模型使用了8层卷积神经网络,其中有5层卷积和2层全...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 258
精华内容 103
关键字:

卷积神经网络参数个数计算