精华内容
下载资源
问答
  • CNN参数计算公式

    千次阅读 2017-07-31 23:43:53
    参数数量计算就是 kernel_size*kernel_size*kernel_numbers*input_channels

    参数数量计算就是 kernel_size*kernel_size*kernel_numbers*input_channels

    展开全文
  • CNN参数计算

    2019-07-27 23:41:29
  • 卷积计算公式 1、卷积层输入特征图(input feature map)的尺寸为:H(input)×W(input)×C(input) H(input)表示输入特征图的高 W(input)表示输入特征图的宽 C(input)表示输入特征图的通道数(如果是第一个卷积层...

    卷积计算公式

    1、卷积层输入特征图(input feature map)的尺寸为:H(input)×W(input)×C(input)

          

            H(input)表示输入特征图的高

            W(input)表示输入特征图的宽

            C(input)表示输入特征图的通道数(如果是第一个卷积层则是输入图像的通道数,如果是中间的卷积层则是上一层的输出通道数

    2、卷积层的参数有如下几个

            输出通道数为K

            正方形卷积核的边长为F

            步幅(stride)为S

            补零的行数和列数(padding)为P

    3、输出特征图(output feature map)的尺寸为H(input)×W(input)×C(input),其中每一个变量的计算方式如下:

            H(output)=(H(input)−F+2P)/S+1

            W(output)=(Winput−F+2P)/S+1

           C(output)=K

    4、参数量大小的计算,分为weights和biases:

            首先来计算weights的参数量:F×F×C(input)×K

            接着计算biases的参数量:K

            所以总参数量为:F×F×C(input)×K+K

    池化的计算

            

    设置

    H = height, W = width, D = depth

        输入维度是 4x4x5 (HxWxD)
        滤波器大小 2x2 (HxW)
        stride 的高和宽都是 2 (S)

    新的高和宽的公式是:

        new_height = (input_height - filter_height)/S + 1
        new_width = (input_width - filter_width)/S + 1

    注意:池化层的输出深度与输入的深度相同。另外池化操作是分别应用到每一个深度切片层。

    下图给你一个最大池化层如何工作的示例。这里,最大池化滤波器的大小是 2x2。当最大池化层在输入层滑动时,输出是这个 2x2 方块的最大值。

     参考:https://blog.csdn.net/sinat_32547403/article/details/74937527

                  https://blog.csdn.net/gaishi_hero/article/details/81512404

     

     

    展开全文
  • CNN卷积层相关计算公式

    万次阅读 2017-09-24 21:09:41
    计算任意给定卷积层的输出的大小的公式是 其中 O 是输出尺寸,K 是过滤器尺寸,P 是填充,S 是步幅。 选择超参数 我们怎么知道要用多少层、多少卷积层、过滤器尺寸是多少、...
    师兄最近找工作笔试有遇到过~容易忘

    作者:机器之心
    链接:https://www.zhihu.com/question/52668301/answer/131573702
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    preview

    如果我们在输入内容的周围应用两次零填充,那么输入量就为 32×32×3。然后,当我们应用带有 3 个 5×5×3 的过滤器,以 1 的步幅进行处理时,我们也可以得到一个 32×32×3 的输出


    如果你的步幅为 1,而且把零填充设置为

    preview

    K 是过滤器尺寸,那么输入和输出内容就总能保持一致的空间维度。


    计算任意给定卷积层的输出的大小的公式是


    其中 O 是输出尺寸,K 是过滤器尺寸,P 是填充,S 是步幅。




    选择超参数


    我们怎么知道要用多少层、多少卷积层、过滤器尺寸是多少、以及步幅和填充值多大呢?这些问题很重要,但又没有一个所有研究人员都在使用的固定标准。这是因为神经网络很大程度上取决于你的数据类型。图像的大小、复杂度、图像处理任务的类型以及其他更多特征的不同都会造成数据的不同。对于你的数据集,想出如何选择超参数的一个方法是找到能创造出图像在合适尺度上抽象的正确组合。


    ReLU(修正线性单元)层


    在每个卷积层之后,通常会立即应用一个非线性层(或激活层)。其目的是给一个在卷积层中刚经过线性计算操作(只是数组元素依次(element wise)相乘与求和)的系统引入非线性特征。过去,人们用的是像双曲正切和 S 型函数这样的非线性方程,但研究者发现 ReLU 层效果好得多,因为神经网络能够在准确度不发生明显改变的情况下把训练速度提高很多(由于计算效率增加)。它同样能帮助减轻梯度消失的问题——由于梯度以指数方式在层中消失,导致网络较底层的训练速度非常慢。ReLU 层对输入内容的所有值都应用了函数 f(x) = max(0, x)。用基本术语来说,这一层把所有的负激活(negative activation)都变为零。这一层会增加模型乃至整个神经网络的非线性特征,而且不会影响卷积层的感受野。

    作者:知乎用户
    链接:https://www.zhihu.com/question/29021768/answer/43488153
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    第一个问题:为什么引入非线性激励函数?
    如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(Perceptron)了。
    正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络就有意义了(不再是输入的线性组合,可以逼近任意函数)。最早的想法是sigmoid函数或者tanh函数,输出有界,很容易充当下一层输入(以及一些人的生物解释balabala)。

    第二个问题:为什么引入Relu呢?
    第一,采用sigmoid等函数,算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。
    第二,对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换太缓慢,导数趋于0,这种情况会造成信息丢失,参见
    @Haofeng Li答案的第三点),从而无法完成深层网络的训练。

    第三,Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。



    • 参见 Geoffrey Hinton(即深度学习之父)的论文:Rectified Linear Units Improve Restricted Boltzmann Machines


    池化层


    在几个 ReLU 层之后,程序员也许会选择用一个池化层(pooling layer)。它同时也被叫做下采样(downsampling)层。在这个类别中,也有几种可供选择的层,最受欢迎的就是最大池化( max-pooling)。它基本上采用了一个过滤器(通常是 2x2 的)和一个同样长度的步幅。然后把它应用到输入内容上,输出过滤器卷积计算的每个子区域中的最大数字。

    preview

    带有 2×2 和过滤器的且步幅为 2 的最大池化的例子


    池化层还有其他选择,比如平均池化(average pooling)和 L2-norm 池化 。这一层背后的直观推理是:一旦我们知道了原始输入(这里会有一个高激活值)中一个特定的特征,它与其它特征的相对位置就比它的绝对位置更重要。可想而知,这一层大幅减小了输入卷的空间维度(长度和宽度改变了,但深度没变)。这到达了两个主要目的。第一个是权重参数的数目减少到了75%,因此降低了计算成本。第二是它可以控制过拟合(overfitting)。这个术语是指一个模型与训练样本太过匹配了,以至于用于验证和检测组时无法产生出好的结果。出现过拟合的表现是一个模型在训练集能达到 100% 或 99% 的准确度,而在测试数据上却只有50%。


    Dropout 层


    如今,Dropout 层在神经网络有了非常明确的功能。上一节,我们讨论了经过训练后的过拟合问题:训练之后,神经网络的权重与训练样本太过匹配以至于在处理新样本的时候表现平平。Dropout 的概念在本质上非常简单。Dropout 层将「丢弃(drop out)」该层中一个随机的激活参数集,即在前向通过(forward pass)中将这些激活参数集设置为 0。简单如斯。既然如此,这些简单而且似乎不必要且有些反常的过程的好处是什么?在某种程度上,这种机制强制网络变得更加冗余。这里的意思是:该网络将能够为特定的样本提供合适的分类或输出,即使一些激活参数被丢弃。此机制将保证神经网络不会对训练样本「过于匹配」,这将帮助缓解过拟合问题。另外,Dropout 层只能在训练中使用,而不能用于测试过程,这是很重要的一点。


    • 参考 Geoffrey Hinton 的论文:Dropout: A Simple Way to Prevent Neural Networks from Overfitting


    网络层中的网络


    网络层中的网络指的是一个使用了 1 x 1 尺寸的过滤器的卷积层。现在,匆匆一瞥,你或许会好奇为何这种感受野大于它们所映射空间的网络层竟然会有帮助。然而,我们必须谨记 1x1 的卷积层跨越了特定深度,所以我们可以设想一个1 x 1 x N 的卷积层,此处 N 代表该层应用的过滤器数量。该层有效地使用 N 维数组元素依次相乘的乘法,此时 N 代表的是该层的输入的深度。


    • 参阅 Min Lin 的论文:Network In Network


    分类、定位、检测、分割


    本系列第一部分使用的案例中,我们观察了图像分类任务。这个过程是:获取输入图片,输出一套分类的类数(class number)。然而当我们执行类似目标定位的任务时,我们要做的不只是生成一个类标签,而是生成一个描述图片中物体suo所在位置的边界框。


    我们也有目标检测的任务,这需要图片上所有目标的定位任务都已完成。


    因此,你将获得多个边界框和多个类标签。


    最终,我们将执行目标分割的任务:我们需要输出类标签的同时输出图片中每个目标的轮廓。

    preview

    关于目标检测、定位、分割的论文有很多,这里就不一一列出了。


    迁移学习


    如今,深度学习领域一个常见的误解在于没有谷歌那样的巨量数据,你将没有希望创建一个有效的深度学习模型。尽管数据是创建网络中至关重要的部分,迁移学习的思路将帮助我们降低数据需求。迁移学习指的是利用预训练模型(神经网络的权重和参数都已经被其他人利用更大规模的数据集训练好了)并用自己的数据集将模型「微调」的过程。这种思路中预训练模型扮演着特征提取器的角色。你将移除网络的最后一层并用你自有的分类器置换(取决于你的问题空间)。然后冻结其他所有层的权重并正常训练该网络(冻结这些层意味着在梯度下降/最优化过程中保持权值不变)。


    让我们探讨一下为什么做这项工作。比如说我们正在讨论的这个预训练模型是在 ImageNet (一个包含一千多个分类,一千四百万张图像的数据集)上训练的 。当我们思考神经网络的较低层时,我们知道它们将检测类似曲线和边缘这样的特征。现在,除非你有一个极为独特的问题空间和数据集,你的神经网络也会检测曲线和边缘这些特征。相比通过随机初始化权重训练整个网络,我们可以利用预训练模型的权重(并冻结)聚焦于更重要的层(更高层)进行训练。如果你的数据集不同于 ImageNet 这样的数据集,你必须训练更多的层级而只冻结一些低层的网络。


    • Yoshua Bengio (另外一个深度学习先驱 )论文:How transferable are features in deep neural networks?

    • Ali Sharif Razavian 论文:CNN Features off-the-shelf: an Astounding Baseline for Recognition

    • Jeff Donahue 论文:DeCAF: A Deep Convolutional Activation Feature for Generic Visual Recognition


    数据增强技术


    现在我们对卷积网络中数据的重要性可能已经感到有些麻木了,所以我们来谈下如何利用一些简单的转换方法将你现有的数据集变得更大。正如我们之前所提及的,当计算机将图片当作输入时,它将用一个包含一列像素值的数组描述(这幅图)。若是图片左移一个像素。对你和我来说,这种变化是微不可察的。然而对计算机而已,这种变化非常显著:这幅图的类别和标签保持不变,数组却变化了。这种改变训练数据的数组表征而保持标签不变的方法被称作数据增强技术。这是一种人工扩展数据集的方法。人们经常使用的增强方法包括灰度变化、水平翻转、垂直翻转、随机编组、色值跳变、翻译、旋转等其他多种方法。通过利用这些训练数据的转换方法,你将获得两倍甚至三倍于原数据的训练样本。


    深度 | 从入门到精通:卷积神经网络初学者指南(附论文)


    展开全文
  • 计算公式(前向计算公式): Lk:表示第k层的感受野 Lk-1:表示第k-1层的感受野 Fk:表示第k层卷积核的大小 Si:表示第i层的步长 一般来说第一层感受野为该层卷积核的大小。感受野计算不考虑padding参数。 下图...
  • 参数量大小的计算,分为weights和biases: 首先来计算weights的参数量: F × F × C i n p u t × K F × F × C i n p u t × K F \times F \times C_{input} \times K 接着计算biases的参数量: K K K ...
  • ## pytorch卷积层与池化层输出的尺寸的计算公式详解 要设计卷积神经网络的结构,必须匹配层与层之间的输入与输出的尺寸,这就需要较好的计算输出尺寸 卷积后,池化后尺寸计算公式: (图像尺寸-卷积核尺寸 + 2填充值)...
  •   首先,我们介绍一下卷积神经网络(Convolutional Neural Networks, CNNs / ConvNets)的三个主要的超参数depth、stride zero-padding: 输出量的深度(depth)是一个超参数:它对应于我们想要使用的过滤器...
  • CNN计算量和参数计算方法

    千次阅读 2019-07-05 17:51:12
    我们在设计一个CNN网络时,通常要考虑两个事情,一个是这个网络需要的计算量有多大,一个是这个模型的参数量有多少。前者决定了网络训练的快慢(硬件设备确定的情况),后者决定了计算设备需要多大的内存或显存。 ...
  • CNN反向传播公式推导

    千次阅读 2016-12-06 19:33:05
    CNN架构的连接比权值要多很多,这实际上就隐含着实现了某种形式的规则化。这种特别的网络假定了我们希望通过数据驱动的方式学习到一些滤波器,作为提取输入的特征的一种方法。  本文中,我们先对训练全连接网络的...
  • <!-- flowchart 箭头图标 勿删 --> <svg xmlns=..."><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-...
  • 卷积核参数计算公式笔记 notation: 设输入为2维图像,输入大小为i∗ii * ii∗i,并且 kernel size=k stride = s padding=p 公式1:对于任意的i和k,如果s=1,p=0s=1,p=0s=1,p=0,则 o=(i−k)+1 o=(i-k)+1 o=(i−k)+1 ...
  • CNN计算量和参数

    2019-08-11 09:14:14
    1、计算量公式: C_in*C_out*K*K*H_out*W...2、参数计算公式:C_in*C_out*K*K*batchsize 参数量和channel是有关的,和卷积核大小是有关的,也就是说,多层channel的卷积核是不共享权值的。无论图像大小是多少,每...
  • Faster R-CNN中的公式记录 1.最简单的特征图尺寸变换公式 Hout=Hin−hkernel+2∗paddingstride+1 H_{out}= \frac{H_{in}-h_{kernel}+2*padding}{stride}+1 Hout​=strideHin​−hkernel​+2∗padding​+1 2.Bounding...
  • CNN公式推导举例

    2018-04-07 21:06:02
    本篇文章介绍了cnn参数基本的计算过程,http://www.datakit.cn/blog/2016/03/23/bp_cnn.html,对于一些细节描述不是很清楚。但是对于参数的传播有例子加以说明。 pooling层和卷积层的反向传播需要参考 ...
  • 点击上方“AI算法与图像处理”,选择加"星标"或“置顶”重磅干货,第一时间送达文 |AI_study原标题:CNN Output Size Formula - Bonus...
  • CNN公式推导

    万次阅读 多人点赞 2015-06-20 22:30:01
    CNN公式推导 1 前言  在看此blog之前,请确保已经看懂我的前两篇blog【深度学习笔记1(卷积神经网络)】和【BP算法与公式推导】。并且已经看过文献[1]的论文【Notes on Convolutional Neural Networks】。因为本文...
  • CNN计算问题

    千次阅读 2018-11-02 22:57:07
    2.参数计算 Conv Layer参数数量: 总参数数量为所有weights和bias的总和。 maxpooling层只有超参数 =卷积层的weights数量, =卷积层的biases数量, =所有参数的数量,K=核尺寸,N=核数量,C =输入通道数 ...
  • cnn公式推导

    2015-10-10 19:35:00
    CNN公式推导 1 前言 在看此blog之前,请确保已经看懂我的前两篇blog【深度学习笔记1(卷积神经网络)】和【BP算法与公式推导】。并且已经看过文献[1]的论文【Notes on Convolutional Neural Networks】。因为本文...
  • CNN模型的计算量、参数、显存占用

    千次阅读 2019-11-01 11:51:41
    经典CNN模型的计算量、参数、显存占用 文章目录经典CNN模型的计算量、参数、显存占用1. 深度学习复杂度2. FLOPS概念3.参数计算4. 输出特征图尺寸5. 常用模型的FlOPs和参数量6. 参数量和占用GPU显存的关系1.基础...
  • CNN模型计算量估计

    2019-12-30 16:54:28
    在我们训练的深度学习模型在资源受限的嵌入式设备上落地时,精度不是我们唯一的考量因素,我们还需要考虑 ...对于视频或者游戏,FPS也越来越高,这都要求我们的模型在计算时,速度越快越好,计算量越小越好; ...
  • 网上介绍卷积网络感受野(Receptive Field)参数计算往往都是通过代码来进行得,容易看的云里雾里。我这里通过一个例子来解释感受野参数原理以及通过公式来手算它们。 感受野参数概念 感受野参数主要有3个: jump:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,617
精华内容 9,046
关键字:

cnn参数计算公式