insightface 里面的计算flops 的方法

在:下面的flops_counter.py

python flops_counter.py 可以得到需要的flops

从代码上可以看到 计算两部分的flops

一部分是卷积的flops 另外一部分是fc 层的flops attr 表示有没有偏置

我们打印出来卷积里面的input_shape 和output_shape

cov层的flops 的计算公式为:

-1 是对于没有偏置的情况

kernel 一般是方形的 kernel[0] 和kernel[1] 是一样的

输入通道对应input_shape[1]  比如3 64 。。。。

输出通道为output_shape[1] 比如 64 128。。。。

def count_conv_flops(input_shape, output_shape, attr):kernel = attr['kernel'][1:-1].split(',')kernel = [int(x) for x in kernel]#print('kernel', kernel)if is_no_bias(attr):ret = (2*input_shape[1]*kernel[0]*kernel[1]-1)*output_shape[2]*output_shape[3]*output_shape[1]else:ret = 2*input_shape[1]*kernel[0]*kernel[1]*output_shape[2]*output_shape[3]*output_shape[1]num_group = 1if 'num_group' in attr:num_group = int(attr['num_group'])ret /= num_groupreturn int(ret)

H 和 W 分别为 输出层的feature map

对于

对于全连接层:

 for nodeid, node in enumerate(nodes):flops = 0if node['op']=='Convolution':output_shape = nodeid_shape[nodeid]name = node['name']attr = node['attrs']input_nodeid = node['inputs'][0][0]input_shape = nodeid_shape[input_nodeid]flops = count_conv_flops(input_shape, output_shape, attr)elif node['op']=='FullyConnected':attr = node['attrs']output_shape = nodeid_shape[nodeid]input_nodeid = node['inputs'][0][0]input_shape = nodeid_shape[input_nodeid]output_filter = output_shape[1]input_filter = input_shape[1]*input_shape[2]*input_shape[3]#assert len(input_shape)==4 and input_shape[2]==1 and input_shape[3]==1flops = count_fc_flops(input_filter, output_filter, attr)#print(node, flops)

模型flops 的计算方法相关推荐

  1. 【25】模型参数量Params与计算量Flops的计算方法

    文章目录 1. 推导公式 1.1 CNN Params 1.2 CNN Flops 1.3 Linear Params 1.4 Linear Flops 2. 计算方法 2.1 parameters法 ...

  2. 深度学习模型FLOPs详解

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

  3. Pytorch统计网络参数计算工具、模型 FLOPs, MACs, MAdds 关系

    Pytorch统计网络参数 #网络参数数量 def get_parameter_number(net):total_num = sum(p.numel() for p in net.parameter ...

  4. CNN 模型的参数(parameters)数量和浮点运算数量(FLOPs)是怎么计算的

    文章目录: 1 模型参数(parameters)的个数 1.1 模型参数介绍 1.2 常见网络的模型参数个数 1.2 举例如何计算神经网络模型参数 2 FLOPS:每秒浮点运算次数 2.1 `FLOP ...

  5. 【pytorch】深度学习所需算力估算:flops及模型参数量

    目录 计算量的要求是在于芯片的floaps(指的是gpu的运算能力) 参数量对应显存大小选型 常见的英伟达显卡的FLOPS和显存规格 pytorch中的floaps与显存计算方法 计算量的要求是在于芯 ...

  6. pytorch模型参数信息 计算模型的FLOPs

    参考链接:https://blog.csdn.net/tsq292978891/article/details/87918244 打印模型参数信息 在python3环境下安装torchsummary ...

  7. 芯片模型算力指标TOPS FLOPS MAC MACC MADD关系

    1.TOPS(Tera Operations Per Second)每秒万亿次操作 处理器运算能力单位 TOPS是Tera Operations Per Second的缩写,1TOPS代表处理器每秒钟 ...

  8. 034CSS3盒子模型大小计算方法

    一.分类 CSS3 中可以通过 box-sizing属性 来指定盒子模型大小的计算方法,有2个值:即可指定为 content-box.border-box,这样我们计算盒子大小的方式就发生了改变. 可 ...

  9. FLOPs FLOPS

    FLOPS 注意全部大写 是floating point of per second的缩写,意指每秒浮点运算次数.用来衡量硬件的性能. FLOPs 是floating point of operati ...

最新文章

  1. 算法题:“找出单身狗”--找出一个数组中只出现一次的数字
  2. 20120520 Linux下mysql的自动备份工具
  3. 在线项目管理软件leangoo 管理 技术支持
  4. 使用secondary sort实现数据关联 完整示例代码
  5. 一个多线程死锁案例,如何避免及解决死锁问题?
  6. DNS服务器详解--------基础篇
  7. 配置Memcache服务器并实现主从复制功能(repcached)
  8. 今天才发现自己美工其实很厉害!
  9. python游戏编程快速上手豆瓣_Python游戏编程快速上手(第4版)
  10. 解决方法 svn checkout 更改用户名密码/断网续传
  11. 自己整理的90分以上最新物联网技术导论期末选择填空大题总考点
  12. 开上帝视角,其实你也能
  13. 设计模式-工厂模式-3种-以手机制造工厂为例
  14. 【毕业设计】python opencv 深度学习 指纹识别算法实现
  15. mysql 参数set_MySQL--mysqldmp命令参数set-gtid-purged
  16. 从0到1,用张三的故事讲述一张中学生也能看懂的财务报表
  17. 高德地图web精准定位
  18. Ollydbg 1.10's plugin LsMem2CAry.dll
  19. 第一篇什么都没写的博客
  20. 机器学习(18)——分类算法(补充)

热门文章

  1. Win10 + CUDA10.1+pytorch手动安装
  2. 实例标识助力您的应用迁上云端
  3. 1 python简介与安装
  4. 递归法----整数划分问题
  5. TYVJ P1073 加分二叉树 Label:区间dp
  6. 如何查看所安装的jdk的版本位数
  7. chrome 版本 29.0.1547.76 m 解决打开新标签页后的恶心页面的问题
  8. 数据库三范式,轻松理解
  9. 在SQL Server中取得操作系统文件的最后修改日期 [Z]
  10. 用API实现串口异步读写