CNN 模型所需的计算力(flops)和参数(parameters)数量是怎么计算的

看到有人对flops有疑惑,先捋清这个概念。

FLOPS:注意全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。

FLOPs:注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。

网上打字很容易全小写,造成混淆,本问题针对模型,应指的是FLOPs

each MAC contains one multiplication and one addition.

————————————————————————————————————————

描述一个深度学习框架/模型,除了它的精度,通常用Forward Pass计算量和参数个数(#Parameters)来描述复杂度

前者描述了所需的计算力

后者描述了所需的内存

1、深度学习框架FLOPs的概念(即:浮点运算数量;也可以用MAC表示:each MAC contains one multiplication and one addition.)https://github.com/sovrasov/flops-counter.pytorch/issues/16

paper里比较流行的单位是GFLOPs:1 GFLOPs = 10^{9} FLOPs (即:10亿次浮点计算)

2、深度学习框架FLOPs的组成

1、卷积运算Conv

用以下动图中直观的解释:

image大小:5*5

卷积核大小:3*3

举例:一次3*3的卷积(求右图矩阵的一个元素的值)所需的运算量:(3*3)个乘法+(3*3-1)各加法 =17

得到3*3大小的特征图尺寸:17*9 = 153

1)bn

2)linear

3)上采样

4)poolings

5)relu

Conv占的比重最大,此外他和输入图像的大小也有关系

而#Parameters和图像大小没有关系

3、计算Forward Pass计算量和参数个数(#Parameters)的代码(基于pytorch)

https://github.com/Lyken17/pytorch-OpCounter

https://github.com/sovrasov/flops-counter.pytorch

4、常用框架的复杂度

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值