精华内容
下载资源
问答
  • 神经网络参数个数计算规则

    千次阅读 2020-04-03 19:06:27
    参数个数计算是搭建神经网络的关键,错误的参数个数,将直接导致神经网络运算的崩溃,这里简要记录下,供大家参考: 已知:  输入图像尺寸:m×n×c(c:通道数)  卷积核尺寸:f×f×c  padding 大小:p  ...

    参数个数计算是搭建神经网络的关键,错误的参数个数,将直接导致神经网络运算的崩溃,这里简要记录下,供大家参考:

    个人设计神经网络时的计算方法:
    已知:
      输入图像尺寸:m×n×c(c:通道数)
      卷积核尺寸:f×f×c
      padding 大小:p
      stride 大小:s

    由此,卷积后的输出图像尺寸为:(非整数时,向下取整)
    在这里插入图片描述


    TensorFlow中的参数个数计算(两种 padding 方式)
    已知:
      输入图像尺寸:m×n×c(c:通道数)
      卷积核尺寸:f×f×c
      padding 大小:SAME 和 VALID
      stride 大小:s
      
    padding = SAME 时:(非整数时,向上取整)
    在这里插入图片描述
    padding = VALID 时:(非整数时,向上取整)
    在这里插入图片描述

    展开全文
  • 深度神经网络-权值参数个数计算

    千次阅读 2017-05-16 20:15:50
    详细解释CNN卷积神经网络各层的参数和链接个数计算 分类:深度学习  (15362) (14) 举报 收藏 卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。...

    详细解释CNN卷积神经网络各层的参数和链接个数的计算

       

    卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。

           图:卷积神经网络的概念示范:输入图像通过和三个可训练的滤波器和可加偏置进行卷积,滤波过程如图一,卷积后在C1层产生三个特征映射图,然后特征映射图中每组的四个像素再进行求和,加权值,加偏置,通过一个Sigmoid函数得到三个S2层的特征映射图。这些映射图再进过滤波得到C3层。这个层级结构再和S2一样产生S4。最终,这些像素值被光栅化,并连接成一个向量输入到传统的神经网络,得到输出。

          每个层有多个Feature Map,每个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个输入。

                 

    图:卷积和子采样过程:卷积过程包括:用一个可训练的滤波器fx去卷积一个输入的图像(第一阶段是输入的图像,后面的阶段就是卷积特征map了),然后加一个偏置bx,得到卷积层Cx。子采样过程包括:每邻域四个像素求和变为一个像素,然后通过标量Wx+1加权,再增加偏置bx+1,然后通过一个sigmoid激活函数,产生一个大概缩小四倍的特征映射图Sx+1。

     

    展开全文
  • 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个。

    计算结果

    在这里插入图片描述

    展开全文
  • 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中计算量和参数的计算方法
    主要的内容参考上面的博客,自己梳理了一下,认为这样写更清晰一些。

    展开全文
  • 参考:https://www.cnblogs.com/hejunlin1992/p/7624807.html举例1: 比如输入是一32x32x3的图像,3表示RGB三通道,每filter/kernel是5x5x3,一卷积核产生一feature map,下图中,有65x5x3的卷积核,故...
  • 神经网络模型运算可以看成一数据流入流出的过程,涉及的计算包含内存占用和浮点运算量两方面。数据占用的空间计算很容易,数据量乘以表示单个数据所占用的字节 (e.g, 4, 8)。复杂一点的是 layer 部分的参数...
  • 本篇文章来自于learnopencv....在这篇文章中,我们分享了一些公式来计算张量(图像)的大小和卷积神经网络(CNN)中每一层的参数个数。 此帖子不定义CNN中使用的基本术语...
  • 如果您参考具有16层的VGG...观察由3 x conv3-256 层组成的第3卷积阶段:第一有N = 128输入平面,F = 256输出平面,另外两有N = 256输入平面和F = 256输出平面 .对于这些层中的每一层,卷积核为3x3 ....
  • 卷积神经网络是一多层的神经网络,每层由多二维平面组成,而每平面由多独立神经元组成。  图:卷积神经网络的概念示范:输入图像通过和三可训练的滤波器和可加偏置进行卷积,滤波过程如图一,卷积后在C1...
  • 一、卷积神经网络参数计算 CNN一牛逼的地方就在于通过感受野和权值共享减少了神经网络需要训练的参数的个数,所谓权值共享就是同一Feature Map中神经元权值共享,该Feature Map中的所有神经元使用同一权值。...
  • 今天,我们来分享一篇博文,关于如何计算图像张量的大小以及确定卷积神经网络各层参数个数的公式。假设我们已经熟悉了卷积神经网络相关概念。在这里,我们把张量定义为有任意通道数的图像。 我们将用AlexNet作为例子...
  • AI:神经网络在深度学习过程中每层训练的网络参数...计算每一层神经网络在深度学习过程中的训练参数个数的常规公式2为: total_params_count = (filter_height * filter_width * input_channels + 1) * number_of_...
  • 参考链接:... 计算参数量 需要用到如下两库: from functools import reduce import operator 遍历模型的参数,并提取参数的维度: def get_layer_param(model): return sum([reduce(...
  • 神经网络是一多层的神经网络,每层由多二维平面组成,而每平面由多独立神经元组成。  图:卷积神经网络的概念示范:输入图像通过和三可训练的滤波器和可加偏置进行卷积,滤波过程如图一,卷积后在C1...
  • 卷积后卷积层大小 W2= (W1-F+2P)/S +1 ... 即(卷积核宽x卷积核高)x卷积核的个数 + 偏差个数(即卷积核的个数,每一层有一个bias) Padding的大小 P = (F-S)/2 即(卷积核的宽度-步长)的一半 ...
  • 文章目录神经网络CNN卷积神经网络CNN的由来局部感受野共享权重池化CNN的结构光栅化LeNet5详解LeNet5-C1层LeNet5-S2层LeNet5-C3层LeNet5-S4层LeNet5-C5层LeNet5-F6层LeNet5-OUTPUT层计算公式LeNet5实战定义网络模型...
  • http://blog.csdn.net/dcxhun3/article/details/46878999

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 721
精华内容 288
关键字:

神经网络参数个数计算