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