神经网络的参数量(Params)和计算量(FLOPs)

这篇具有很好参考价值的文章主要介绍了神经网络的参数量(Params)和计算量(FLOPs)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

定义

参数量(Params)

参数量是指模型训练中需要训练的参数总数。用来衡量模型的大小(计算空间复杂度)。

计算量(FLOPs)

浮点运算次数,理解为计算量(计算时间复杂度),可以用来衡量算法的复杂度,常用做神经网络模型速度的间接衡量标准(虽然最近已经有文章证明靠FLOPs间接标准评价模型的速度是不靠谱的,因为模型的计算速度还跟内存的吞吐等因素相关,但此标准依然广泛用作模型速度的参考评价标准)。在计算 FLOPS时,我们通常将加,减,乘,除,求幕,平方根等作为单个FLOP进行计数。

公式表示

卷积层

神经网络的参数量(Params)和计算量(FLOPs)
输入维度: W i n ∗ H i n ∗ C i n W_{in}*H_{in}*C_{in} WinHinCin
输出维度: W o u t ∗ H o u t ∗ C o u t W_{out}*H_{out}*C_{out} WoutHoutCout
卷积核: k w ∗ k h k_w*k_h kwkh

参数量: k w ∗ k h ∗ C i n ∗ C o u t k_w*k_h * C_{in} * C_{out} kwkhCinCout
参数量(包括偏置bias): ( k w ∗ k h ∗ C i n + 1 ) ∗ C o u t (k_w*k_h * C_{in} + 1) * C_{out} (kwkhCin+1)Cout

计算量: k w ∗ k h ∗ C i n ∗ W o u t ∗ H o u t ∗ C o u t k_w*k_h* C_{in} * W_{out} * H_{out} * C_{out} kwkhCinWoutHoutCout
计算量(考虑加法和偏置): [ ( k w ∗ k h ∗ C i n ) + ( k w ∗ k h ∗ C i n − 1 ) + 1 ] ∗ W o u t ∗ H o u t ∗ C o u t [(k_w*k_h* C_{in}) +\boldsymbol{(k_w*k_h* C_{in}-1)+1}]* W_{out} * H_{out} * C_{out} [(kwkhCin)+(kwkhCin1)+1]WoutHoutCout

PS: 其中 k w ∗ k h ∗ C i n k_{w} * k_{h}* C_{i n} kwkhCin表示乘法计算量, k w ∗ k h ∗ C i n − 1 k_{w} * k_{h}* C_{i n}-1 kwkhCin1表示加法计算量,+1表示偏置

池化层和激活层

激活、池化层仅仅对原来的矩阵做了一个变换,不会引进新的参数,这些其他层类型肯定需要时间,但它们不使用点积,并且成为网络总计算复杂度的舍入误差。
神经网络的参数量(Params)和计算量(FLOPs)

全连接层

全连接层设置下一层神经元的个数,并使用仿射变换 y i = W ⃗ i ⋅ x ⃗ + b i y_i = \vec W_i \cdot \vec x+b_i yi=W ix +bi得到下一层神经元的值,因为两层之间的神经元会全部连接起来,所及叫做全连接,如图所示。
神经网络的参数量(Params)和计算量(FLOPs)
输入维度: d i n d_{in} din
输出维度: d o u t d_{out} dout

参数量: d i n ∗ d o u t d_{in}*d_{out} dindout
参数量(包括偏置bias): ( d i n + 1 ) ∗ d o u t (d_{in}+1)*d_{out} (din+1)dout

计算量: d i n ∗ d o u t d_{in}*d_{out} dindout
计算量(考虑加法和偏置): [ d i n + ( d i n − 1 ) + 1 ] ∗ d o u t [d_{in}+(d_{in}-1)+1]*d_{out} [din+(din1)+1]dout
PS: d i n − 1 d_{in} -1 din1表示加法运算量(权重矩阵与输入/上一层值的矩阵向量相乘所需的加法运算),+1表示偏置,输入是多维的直接相乘即可。

BN层

BN层引入的参数和输入层神经元个数相关,假设输入神经元个数为n,则该层引进的参数为2n不过但部分情况下可以完全忽略Batch Normalization层的影响

总结: 对于神经网络模型,减少网络参数应主要针对全连接层;而进行计算量优化时,重点应放在卷积层。

补充: 在笔试时,有时不会给出输出特征图的大小,需要自己计算,特征图大小的计算如下:

卷积层: o u t s i z e = I n P u t S i z e − K e r n e l S i z e + 2 ∗ P a d d i n g S t r i d e + 1 \LARGE {out_{size} = \frac {InPutSize-KernelSize + 2*Padding} {Stride}+1} outsize=StrideInPutSizeKernelSize+2Padding+1

池化层: o u t s i z e = I n P u t S i z e − K e r n e l S i z e S t r i d e + 1 \LARGE {out_{size} = \frac {InPutSize-KernelSize } {Stride}+1} outsize=StrideInPutSizeKernelSize+1

PS: 计算结果不是整数时,卷积层上取整,池化层下取整。文章来源地址https://www.toymoban.com/news/detail-415503.html

到了这里,关于神经网络的参数量(Params)和计算量(FLOPs)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 卷积神经网络每一层输出的形状、通道数、特征图数量以及过滤器数量的理解与计算。

    参考: http://t.csdn.cn/8ApfD ‘http://t.csdn.cn/ZmEOJ 核心观点:  前一层的通道数(特征图数量),决定这一层过滤器的深度; 这一层过滤器的数量,决定这一层输出的通道数(特征图数量) 神经网络每一层输出矩阵的形状一般是4个维度[y1, y2, y3, y4] y1 通常是batch_size,就是每一圈丢

    2023年04月09日
    浏览(49)
  • bp神经网络参数怎么设置,神经网络参数个数计算

    神经网络各个网络参数设定原则:①、网络节点  网络输入层神经元节点数就是系统的特征因子(自变量)个数,输出层神经元节点数就是系统目标个数。隐层节点选按经验选取,一般设为输入层节点数的75%。 如果输入层有7个节点,输出层1个节点,那么隐含层可暂设为5个节点

    2024年02月06日
    浏览(45)
  • 如何计算神经网络参数的个数?

    目录 1. 卷积层 2. 分类层 3. 计算 LeNet 网络的参数个数 神经网络随着层数的加深,网络参数的个数会越来越多,小的网络有成千上万个参数,大的可以达到千万个网络参数。 所以应该如何计算神经网络参数的个数? 图像分类的神经网络,包含两个部分: 特征提取层+ 分类层

    2024年02月06日
    浏览(38)
  • 深度学习基础——卷积神经网络的感受野、参数量、计算量

    深度学习在图像处理领域取得了巨大的成功,其中卷积神经网络(Convolutional Neural Networks,CNN)是一种非常重要的网络结构。本文将介绍卷积神经网络的三个重要指标:感受野、参数量和计算量。首先,会对这些指标进行定义,然后介绍如何计算它们,并通过Python实现示例代

    2024年04月28日
    浏览(38)
  • 主干网络篇 | YOLOv8 更换主干网络之 FasterNet | 《Ran, Don‘t Walk: 追求更高 FLOPS 的快速神经网络》

    论文地址:https://export.arxiv.org/pdf/2303.03667v1.pdf 为了设计快速神经网络,许多工作都集中在减少浮点运算(FLOPs)的数量上。然而,作者观察到FLOPs的这种减少不一定会带来延迟的类似程度的减少。这主要源于每秒低浮点运算(FLOPS)效率低下。并且,如此低的FLOPS主要是由于运

    2024年02月15日
    浏览(39)
  • 深度学习基础入门篇[8]::计算机视觉与卷积神经网络、卷积模型CNN综述、池化讲解、CNN参数计算

    计算机视觉作为一门让机器学会如何去“看”的学科,具体的说,就是让机器去识别摄像机拍摄的图片或视频中的物体,检测出物体所在的位置,并对目标物体进行跟踪,从而理解并描述出图片或视频里的场景和故事,以此来模拟人脑视觉系统。因此,计算机视觉也通常被叫

    2024年02月05日
    浏览(74)
  • 神经网络:参数更新

    在计算机视觉中,参数更新是指通过使用梯度信息来调整神经网络模型中的参数,从而逐步优化模型的性能。参数更新的作用、原理和意义如下: 1. 作用: 改进模型性能:参数更新可以使模型更好地适应训练数据,提高模型的预测准确性。 减小损失函数:通过调整参数,可

    2024年02月10日
    浏览(39)
  • 神经网络 03(参数初始化)

    对于某一个神经元来说 ,需要初始化的参数有两类:一类是权重W,还有一类是偏置b,偏置b初始化为0即可。而权重W的初始化比较重要,我们着重来介绍常见的初始化方式。 (1)随机初始化 随机初始化从均值为 0,标准差是 1 的高斯分布(也叫正态分布)中取样,使用一些

    2024年02月09日
    浏览(47)
  • 【人工智能】神经网络、M-P_神经元模型、激活函数、神经网络结构、学习网络参数、代价定义、总代价

    ⚫ 输入:来自其它n个神经元传递过来的输入信号 ⚫ 处理:输入信号通过带权重的连接进行传递, 神经元接受到总输入值将与神经元的阈值进行比较 ⚫ 输出:通过激活函数的处理以得到输出

    2024年02月16日
    浏览(52)
  • 神经网络中参数与超参数的区别是什么?

    在神经网络中,参数和超参数是两个非常重要但概念上不同的元素。它们的主要区别在于它们在模型训练和构建中的角色和如何被确定。 参数(Parameters) 定义:参数是神经网络在训练过程中学习的变量。这些包括权重(weights)和偏差(biases)。 确定方式:参数是通过训练

    2024年01月22日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包