增加池化层后参数量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了增加池化层后参数量相关的知识,希望对你有一定的参考价值。

valid卷积:不填充padding
same卷积:填充padding,使得输出和输入大小一致
多维卷积:过滤器的最后一个数字通道必须和输入图片的通道数匹配,过滤器的多少,决定最后输出图片的通道数
输出公式(向下取整):
在这里插入图片描述
池化:输入通道数和输出通道数相同,也就是池化的过滤器通道数为1
2.参数量计算
在这里插入图片描述

【卷积层的参数量】
输入:224 * 224 * 3,64个 3 * 3 * 3 filter,输出feature map 224 * 224 * 64,卷积层的参数量为:(3 * 3 * 3 +1 )* 64=1792
计算公式:参数量=(filter size + 1)* 当前层filter数量
【全连接层的参数量】
VGG-16最后一次池化得到的feature map为 7 * 7 * 512 ,全连接层是将feature map展开成一维向量 1 * 4096 。实际上,我们就是用4096个7 * 7 * 512 的filter去做卷积(可以理解为是一个卷积层)。我们就可以计算第一个FC的参数量 (7 * 7 * 512 + 1 )* 4096=102764544
注:如果准确来计算的话,还需要加上偏置b。

3.计算量
【卷积层的计算量】
输入:224 * 224 * 3,64个 3 * 3 * 3 filter,输出feature map 224 * 224 * 64,future map中的每个一像素点都是3 * 3 * 3的filter在原图上计算一次得到的,所以它的计算量为3 * 3 * 3=27
已经知道单个像素的计算量,那么乘以feature map所有像素,就是一次卷积的计算量:224 * 224 * 64 * 3 * 3 * 3
计算量 = 输出的feature map * 当前层filter_size
这仅仅是单个样本前向传播计算量,实际计算量还应乘以batch size。

【全连接层的计算量】
其实和卷积层计算量的计算方法是一样的。
VGG-16最后一次卷积得到的feature map为7 * 7 * 512 ,全连接层是将feature map展开成一维向量 1 * 4096。则FC层的计算量为 1 * 4096 * 7 * 7 * 512=102760448
通过以上讨论可以发现:我们需要减少网络参数时主要针对全连接层;进行计算优化时,重点放在卷积层。

文章知识点与官方知识档案匹配
Python入门技能树人工智能深度学习
212602 人正在系统学习中
点击阅读全文
打开CSDN APP,看更多技术内容

卷积层和池化层的参数_DL-ML的博客_池化层参数
100*100的特征图池化后,变成50*50. 3、Local Response Normalization (LRN)层 此层是对一个输入的局部区域进行归一化,达到“侧抑制”的效果。可去搜索AlexNet或GoogLenet,里面就用到了这个功能 3层类型:LRN 参数:全部为可选,没有必...
继续访问
深度学习之卷积神经网络(7)池化层_炎武丶航的博客
深度学习之卷积神经网络(7)池化层在卷积层中,可以通过调节步长参数s实现特征图的高宽成倍缩小,从而降低了网络的参数量。实际上,处理通过设置步长,还有一种专门的网络层可以实现尺寸缩减功能,它就是这里要介绍的池化层(Pooling Layer)。...
继续访问
【深度学习笔记】卷积层,全连接层,池化层的相关输出参数计算
目录1 说明2 全连接层FC,全连接NN3 卷积Convolutional4 参考 1 说明 kernel == filter feature map ×n == output Depth == channel 符号 参数说明 Wi / Hi / Ci Width / Height / Depth of input W Width of feature map H Height of feature map D Depth of feature map F Szie
继续访问

卷积层、池化层计算公式
本文章简单记录一下计算方法,因为每次都记不住,每次都要百度太麻烦了。 卷积层:(输入图片大小-卷积核大小+2*padding)/strides+1 例如上图,输入图片大小256*256,in_size=3,out_size=64,卷积核大小4*4,strides=2,padding=1。根据公式计算得到128*128*64。其实简单理解通道数可以提取图像更多的特征,可能这个想法并不是特别的准确。 池化层:(输入图片大小-卷积核大小+2*paddi...
继续访问
cnn中一些基础,卷积核,通道数,池化层,批归一化层,参数量与计算量
卷积层参数误差造成估计均值的偏移 一般来说 mean-pooling(平均池化),能减小第一种误差,更多的保留图像的背景信息 max-pooling(最大池化),能减小第二种误差,更多的保留纹理信息。 批归一化(BN层):对输入进行归一化,归一化就是将数据...
继续访问
cnn池化层输入通道数_2、卷积核通道数、个数、参数量计算、1*1卷积
128个卷积核的参数是: 192*3*3*128+128 weight * x + bias 池化层:要么取最大,要么取均值,因此池化层没有参数。 1 * 1卷积有两个作用: 1.实现不同通道同一位置的信息的融合;
继续访问
热门推荐 深度学习第五讲之池化层(Pooling layer)
转载请注明出处   在卷积神经网络中,卷积层之间往往会加上一个池化层。池化层可以非常有效地缩小参数矩阵的尺寸,从而减少最后全连层中的参数数量。使用池化层即可以加快计算速度也有防止过拟合的作用。   在图像识别领域,有时图像太大,我们需要减少训练参数的数量,它被要求在随后的卷积层之间周期性地引进池化层。池化的唯一目的是减少图像的空间大小。池化在每一个纵深维度上独自完成,因此图像的纵深保持不变。池...
继续访问

【机器学习】卷积层,池化层,全连接层,BN层作用;CNN 网络参数数量的计算
官方文档:https://keras.io/layers/convolutional/#zeropadding2d https://www.cnblogs.com/ymjyqsx/p/9451739.html 【搬运】conv卷积层: 1.相当于一个特征提取器来提取特征 2.提供了位置信息 3.减少了参数个数 https://blog.csdn.net/m0_37622530/articl...
继续访问

池化层(pooling layer) & 感受野(Receptive Field) & 神经网络的基本组 ...
(2)池化层 在卷积网络中,通常会在卷积层之间增加池化(Pooling)层,以降低特征图的参数量,提升计算速度,增加感受野,是一种降采样操作。池化是一种较强的先验,可以使模型更关注全局特征而非局部出现的位置,这种降维的过程可以保留一些重要...
继续访问
pytorch——卷积层nn.Con2d()/池化层,参数_seven_zhouyan的博客-CSDN...
最大值池化nn.MaxPool2d()和均值池化nn.AvgPool2d() 常用参数 kernel_size、stride、padding在卷积层部分定义和这里一样 3、批标准化层nn.BatchNorm2d() 4、激活函数nn.ReLU() 5、空洞卷积dilated convolution ...
继续访问
CNN卷积神经网络学习笔记
本篇博客主要归纳整理,CNN相关的基础知识和部分经典卷积神经网络的结构与特点。图片大部分来自Fei-Fei Li CNN课程PPT、网络和paper,如有侵犯请及时告知CNN相关基础知识卷积神经网络和全连接神经网络的区别区别:如上图所示, 1. 全连接神经网络中每个神经元或者filter都与输入图像的每个像素相关联,参数量大 2. 卷积神经网络中每个神经元或者filter只与原图中部分像素相
继续访问
全连接层、卷积层、深度可分离卷积的参数量计算
一、全连接层参数的计算: 若输入大小为32×32×3的图片,第一层全连接层有500个节点,则地一层全连接网络的个参数量为: 32×32×3×500+500 约为150万个参数,参数量多,导致计算速度缓慢且容易造成过拟合 于是卷积操作便横空出世 二、卷积层参数的计算: P_num = K_h × K_w × C_in × C_out + C_out (公式1) 或:P_...
继续访问
最新发布 卷积和全连接层的模型参数计算详解,详细到神经元个数一个个算,天啊,以VGG16为例
卷积层、全连接层参数计算,看一遍必会,详细到神经元一个个计算,oh my god
继续访问

深度学习 卷积层与全连接层权重参数个数的计算
1、卷积网络实例分析 构建卷积网络如下: from tensorflow.python.keras import datasets, models, layers class CNN(object): def __init__(self): model = models.Sequential() # 第1层卷积,卷积核大小为3*3,32个卷积核,28*28为待训练图片的大小 model.add(layers.Conv2D(32, (3, 3),
继续访问

深度学习基础(1)——卷积、池化、全连接
卷积 层数计算 在下图中左侧是一个32323的图像,其中3代表RGB。每个卷积核是553,每个卷积核生成一个特征图(feature map)。下图里面有6个553的卷积核,所以输出6个特征图,大小为28286. 下图中,第二层到第三层,其中每个卷积核大小为5x5x6,这里的6就是28x28x6中的6,两者需要相同,即每个卷积核的“层数”需要与输入的“层数”一致。有几个卷积核,就输出几个feature map,下图中,与第二层作卷积的卷积核有10个,故输出的第三层有10个通道。 单层计算 单个通道的单一
继续访问

Caffe学习系列(3):视觉层(Vision Layers)及参数
所有的层都具有的参数,如name, type, bottom, top和transform_param请参看我的前一篇文章:Caffe学习系列(2):数据层及参数 本文只讲解视觉层(Vision Layers)的参数,视觉层包括Convolution, Pooling, Local Response Normalization (LRN), im2col等层。 1、Convolution层: ...
继续访问
【参数量(Params)与计算量(FLOPs)的计算】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、参数量的计算1.卷积层2.池化层3.全连接层二、计算量的计算1.卷积层2.池化层3.全连接层总结 前言 随着深度学习在工业领域的使用,也随着深度学习的进步,模型的复杂度对于衡量一个模型的好坏也至关重要,本文主要介绍一般情况下参数量(Params)与计算量(FLOPs)的计算。 一、参数量的计算 参数量主要用来形容模型的大小程度,类似于算法中的空间复杂度。 1.卷积层 计算公式如下: params = Co×(Ci×Kw.
继续访问
【keras模型查看】(卷积层、池化层、全连接层、Batchnorm层)参数个数、乘法次数
文章目录1. 卷积层1.1 输入参数1.2 输出维数1.2.1 padding=valid1.2.2 padding=same1.3 参数个数乘法次数 1. 卷积层 1.1 输入参数 卷积的输入参数:指需要做卷积的输入图像/音频等,它要求是一个Tensor,具有[batch, in_height, in_width, in_channels]这样的shape,具体图片的含义是[训练时一个batch的图片数量, 图片高度, 图片宽度, 图像通道数],注意这是一个4维的Tensor,要求类型为float32和
继续访问

深度学习卷积网络浮点计算量和参数量的计算(附Pytorch代码)
本文作者介绍了深度学习卷积网络的浮点计算量和参数量的计算,还附上了以Pytorch代码框架示例的案例。非常适合大家学习了解,值得一读!
继续访问

CNN网络各种层的FLOPs和参数量paras计算
目录FLOPs标准卷积层的FLOPs深度可分离卷积的FLOPs池化层的FLOPS全局池化一般池化全连接层的FLOPs激活层的FLOPsReLUsigmoid参数量卷积层的参数量深度可分离卷积的参数量池化层的参数量全连接层的参数量参考资料 FLOPs 这里先注意一下FLOPs的写法,不要弄混了: FLOPS(全大写):是floating point operations per second的缩写...
继续访问
全连接层的算力计算方式
神经网络的全链接层可以看成两个矩阵相乘的形式,如下图所示,一个MxN的矩阵乘以一个NxP的矩阵,得到一个MxP的矩阵,进行乘法的次数为: (N*N)*(M*P) 加法次数为: (N-1)*M*N 所以,综计算量为(N*N)*(M*P)+(N-1)*M*N ......
继续访问

卷积神经网络中卷积层、池化层、全连接层的作用
1. 卷积层的作用 卷积层的作用是提取输入图片中的信息,这些信息被称为图像特征。 2. 池化层的作用 chi'h 3. 全连接层的作用
继续访问

图解神经网络:卷积、池化、全连接(通道数问题、kernel与filter的概念)
卷积、池化、全连接操作、通道数计算、filter、kernel
继续访问

【深度学习】卷积层与池化层的参数计算
转载自:https://blog.csdn.net/qian99/article/details/79008053 若为1个553的卷积核,则为1层: 若为6个553的卷积核,则为6层: 计算公式: 池化层公式与卷积一样,只是不需要参数,例如MAX POOLING: ...
继续访问

关于全连接层的参数个数计算
CNN中的几个概念(全连接,卷积,线性,全卷积)理解 - 知乎
继续访问
卷积神经网络之卷积层,池化层,全连接层
pooling理论在于,图像中相邻位置的像素是相关的。对一幅图像每隔一行采样,得到的结果依然能看。 经过一层卷积以后,输入的图像尺寸变化不大,只是缩小了卷积核-1。根据相邻数据的相关性,在每个nxn区域内,一般2x2,用一个数代表原来的4个数,这样能把数据缩小4倍,同时又不会损失太多信息。 一副24*24的图像。用5*5卷积核卷积,结果是20*20(四周各-2),经过2*2池化,变成10*10. ...
Valid卷积意味着不填充,这样的话,如果你有一个n×n的图像,用一个f×f的过滤器卷积,它将会给你一个(n-f+1)×(n-f+1)维的输出。
Same卷积,那意味你填充后,你的输出大小和输入大小是一样的。根据这个公式n-f+1,当你填充p个像素点,n就变成了n+2p,最后公式变为n+2p-f+1。因此如果你有一个n×n的图像,用p个像素填充边缘,输出的大小就是这样的(n+2p-f+1)×(n+2p-f+1)。如果你想让n+2p-f+1=n的话,使得输出和输入大小相等,如果你用这个等式求解p,那么p=(f-1)/2。所以当f是一个奇数的时候,只要选择相应的填充尺寸,你就能确保得到和输入相同尺寸的输出。Valid:用过滤器在输入的矩阵中按步长移动时候,会把最后的不足部分的列和行抛弃。Valid卷积意味着不填充
如果你有一个n×n的图像,用一个f×f的过滤器卷积,它将会给你一个(n-f+1)×(n-f+1)维的输出。这类似于我们在前面的视频中展示的例子,有一个6×6的图像,通过一个3×3的过滤器,得到一个4×4的输出。

Same:先在输入矩阵上下各加个值为0的行,在左右各加个值为0的列,也就是用0把原先的矩阵包裹一层,然后在移动的时候如果输入矩阵的列或者行长度不够,就用0来补齐。Same卷积意味填充后,输出大小和输入大小是一样的
参考技术A 增加池化层后参数量=(filter size + 1)* 当前层filter数量 【全连接层的参数量】 VGG-16最后一次池化得到的feature map为 7 * 7 * 512 ,...
也可以认为使用池化层降低输入的尺寸,变相的减少了整个网络的参数!

池化层或卷积层后的激活函数?

【中文标题】池化层或卷积层后的激活函数?【英文标题】:Activation function after pooling layer or convolutional layer? 【发布时间】:2016-06-03 06:38:11 【问题描述】:

这些链接的理论表明卷积网络的顺序是:Convolutional Layer - Non-linear Activation - Pooling Layer

    Neural networks and deep learning (equation (125) Deep learning book (page 304, 1st paragraph) Lenet (the equation) The source in this headline

但是,在这些网站的最后一次实施中,它说顺序是:Convolutional Layer - Pooling Layer - Non-linear Activation

    network3.py The sourcecode, LeNetConvPoolLayer class

我也尝试过探索 Conv2D 操作语法,但没有激活函数,它只是与翻转内核的卷积。有人可以帮我解释为什么会这样吗?

【问题讨论】:

【参考方案1】:

嗯,最大池和单调递增的非线性通勤。这意味着对于任何输入,MaxPool(Relu(x)) = Relu(MaxPool(x))。所以在那种情况下结果是一样的。所以技术上最好先通过最大池化进行二次采样,然后再应用非线性(如果代价高昂,例如 sigmoid)。在实践中,它通常以相反的方式完成 - 它似乎在性能上没有太大变化。

至于 conv2D,它翻转内核。它完全实现了卷积的定义。这是一个线性操作,因此您必须在下一步中自己添加非线性,例如theano.tensor.nnet.relu.

【讨论】:

啊对了,结果是一样的(经过今天的实验),猜测可能是因为成本原因才这样实现的。谢谢:) 卷积不是线性运算,这就是为什么如果你去掉所有的非线性,比如 Relu、sigmoid 等,你仍然会有一个工作网络。卷积操作被实现为性能议程的相关操作,并且在神经网络中,由于过滤器是自动学习的,因此最终效果与卷积过滤器相同。除了在 Bp 中,还考虑了卷积性质。因此,它确实是一个卷积操作,正在发生,因此是一个非线性操作。 卷积线性运算,互相关也是。在数据和过滤器中都是线性的。 如果你想添加 CONV->relu->conv->relu-POOL 怎么办。我见过一些这样的结构。 平均池化怎么样?在github.com/adobe/antialiased-cnns 他们使用Conv->Relu->BlurPool【参考方案2】:

在许多论文中,人们使用conv -> pooling -> non-linearity。这并不意味着您不能使用其他订单并获得合理的结果。在最大池化层和 ReLU 的情况下,顺序无关紧要(两者计算相同):

你可以通过记住 ReLU 是一个元素操作和非递减函数来证明这一点

几乎每个激活函数都会发生同样的事情(其中大多数是非递减的)。但不适用于一般池化层(平均池化)。


尽管如此,两个命令产生相同的结果,Activation(MaxPool(x)) 通过减少操作量来显着加快速度。对于大小为k 的池化层,它使用k^2 次激活函数调用。

遗憾的是,这种优化对于 CNN 来说可以忽略不计,因为大部分时间都用于卷积层。

【讨论】:

【参考方案3】:

最大池化是一个基于样本的离散化过程。目标是对输入表示(图像、隐藏层输出矩阵等)进行下采样,降低其维度并允许对包含在分箱的子区域中的特征进行假设

【讨论】:

以上是关于增加池化层后参数量的主要内容,如果未能解决你的问题,请参考以下文章

深度学习笔记-VGG(池化)

caffe源码 池化层 反向传播

CNN中池化层的作用?池化有哪些操作?

CNN 卷积神经网络 池化层Pooling 动手学深度学习v2 pytorch

理解CNN卷积层与池化层计算

深度学习笔记-VGG