卷积操作的参数量和FLOPs

卷积操作的参数量和FLOPs卷积操作的参数量和FLOPs  这里首先需要辨析一个概念就是FLOPs和FLOPS可以看到简写的差别仅仅是一个字母大小写的区别。  FLOPS(floating-pointoperationspersecond),这个缩写长这个样子确实也很奇怪,大致概念就是指每秒浮点数运算次数,最后一个S是秒(second)的缩写,是计组中的概念,用来描述计算机的运算速度。  FLOPs(floati…

大家好,又见面了,我是你们的朋友全栈君。

卷积操作的参数量和FLOPs

  这里首先需要辨析一个概念就是FLOPs和FLOPS可以看到简写的差别仅仅是一个字母大小写的区别。
  FLOPS(floating-point operations per second),这个缩写长这个样子确实也很奇怪,大致概念就是指每秒浮点数运算次数,最后一个S是秒(second)的缩写,是计组中的概念,用来描述计算机的运算速度。
  FLOPs(floating-point operations),一旦s变为小写,就表示复数的概念,就是浮点数运算次数,这就和计算量相关了,和卷积或者其他算法联系起来基本上就表示计算次数,可用来衡量操作的复杂程度。
  卷积的参数基本上都是说的卷积核的参数,拿一层神经网络来看,卷积核的大小是 ( k h , k w ) (k_h,k_w) (kh​,kw​),显然一个卷积核的参数量是这个卷积核的矩阵 k h ∗ k w k_h*k_w kh​∗kw​,通常这里还要加上一个偏置 b b b,算作一个参数,为了简便计算,这里忽略不计,通常b的设置会有差异性。如果说一层神经网络的输入通道数为 C i n C_{in} Cin​输出通道数为 C o u t C_{out} Cout​,卷积核需要通过矩阵运算,把输入的 C i n C_{in} Cin​的通道数映射为输出为 C o u t C_{out} Cout​,如果熟悉卷积核矩阵乘法,我们显然知道这个卷积核的参数就是 C i n ∗ k h ∗ k w ∗ C o u t C_{in}*k_h*k_w*C_{out} Cin​∗kh​∗kw​∗Cout​,而且需要注意这只是一个卷积核的,如果有多个卷积核的还需要乘数量。
  假设我们经过这个卷积,将输入的特征图映射为 ( H , W ) (H,W) (H,W)的特征图,特征图这些部分是我们中间的计算结果,我们不需要当参数保存,所以计算参数不需要包括这部分。但是如果算卷积操作的计算量,则就用得到了。我们通过对一个区域的卷积运算,将这个区域映射为特征图中的一个cell,同样我们想矩阵的乘法,把一个矩阵乘以 { C i n , k h , k w } \left \{ C_{in},k_h,k_w \right \} {
Cin​,kh​,kw​}
的卷积核变为一个1乘1的矩阵,可以理解为内积操作,所以得到这一个cell的计算量就是这么多个元素的矩阵的内积操作,显然这个计算量就是 C i n ∗ k h ∗ k w C_{in}*k_h*k_w Cin​∗kh​∗kw​个乘法加 C i n ∗ k h ∗ k w C_{in}*k_h*k_w Cin​∗kh​∗kw​-1个加法。但是显然我们输出的通道数是 C o u t C_{out} Cout​,所以我们需要 C o u t C_{out} Cout​个这样的操作。这只是求出来一个输出特征图的cell,我们需要求 H ∗ W H*W H∗W个cell,那么最终的计算量还需要再乘上这个值。也就是 ( 2 C i n ∗ k h ∗ k w − 1 ) ∗ C o u t ∗ H ∗ W \left(2C_{in}*k_h*k_w-1\right)*C_{out}*H*W (2Cin​∗kh​∗kw​−1)∗Cout​∗H∗W的计算量了。
  如果有偏置常数的话,显然这个偏置常数只关系加法,而且是在内积求完之后的,所以相当于加法也变为了 C i n ∗ k h ∗ k w C_{in}*k_h*k_w Cin​∗kh​∗kw​个,没有那个-1,然后这样算出的最终计算量就是 ( 2 C i n ∗ k h ∗ k w ) ∗ C o u t ∗ H ∗ W \left(2C_{in}*k_h*k_w\right)*C_{out}*H*W (2Cin​∗kh​∗kw​)∗Cout​∗H∗W
  一个cell一个cell的计算卷积,我们可以参考一张解释卷积的图。
在这里插入图片描述
  衡量计算量除了FLOPs外还有一种概念是求MACs(Multiply Accumulate)乘积累加运算次数,一次乘积,然后把这个乘积和另外一个数求和就叫一次MAC,显然与上面计算结果的关系就在于是否要乘2的关系。
  如果在本文中,发现了作者的一些错误,请及时指出,感激不尽。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140488.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • wing是什么_nativepage原理

    wing是什么_nativepage原理给定 n 本书,编号为 1∼n。在初始状态下,书是任意排列的。在每一次操作中,可以抽取其中连续的一段,再把这段插入到其他某个位置。我们的目标状态是把书按照 1∼n 的顺序依次排列。求最少需要多少次操作。输入格式第一行包含整数 T,表示共有 T 组测试数据。每组数据包含两行,第一行为整数 n,表示书的数量。第二行为 n 个整数,表示 1∼n 的一种任意排列。同行数之间用空格隔开。输出格式每组数据输出一个最少操作次数。如果最少操作次数大于或等于 5 次,则输出 5 or more。每个

    2022年8月8日
  • 数据库4种索引类型_数据库索引类型

    数据库4种索引类型_数据库索引类型本文介绍DCache中k-v和k-k-v这2种数据类型的基本存储结构,底层采用hash存储,key值的设置使用的是一致性哈希算法,hash冲突通过链表解决。希望通过本文可以帮助你快速理解DCache的底层实现。

    2022年10月19日
  • charles导致mac无法上网_使用不同的MAC地址上网

    charles导致mac无法上网_使用不同的MAC地址上网前言charles关闭后,发现网页突然打开了,那大概率是设置了代理,但明明已经关闭了charles,这是由于mac网络偏好设置中,使用的是手动代理,将其改为自动即可解决方法1打开网络偏好设置,

    2022年7月28日
  • Django(27)Django类视图添加装饰器[通俗易懂]

    Django(27)Django类视图添加装饰器[通俗易懂]类视图在写视图的时候,Django除了使用函数作为视图,也可以使用类作为视图。使用类视图可以使用类的一些特性,比如继承等。Viewdjango.views.generic.base.View是主

    2022年7月29日
  • 基因突变基本知识「建议收藏」

    基因突变基本知识「建议收藏」基因、染色体、蛋白质、DNA,RNA之间的关系是什么?赛福基因公开课今天正式开讲。第一课我们来对基因检测进行基本的介绍。今天我主要从以下两个方面介绍一下基因检测的基础知识,一是基因,包括细胞、染

    2022年8月4日
  • python超链接格式_Openpyxl中的超链接样式「建议收藏」

    python超链接格式_Openpyxl中的超链接样式「建议收藏」4个答案:答案0:(得分:1)importopenpyxlfromopenpyxl.stylesimportFont,Color,colors#…#alternative1:sethyperlinkpropertytocelldeflink_1(cell,link,display=None):cell.hyperlink=linkcell.font=…

    2022年7月19日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号