模型flops 的计算方法
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 的计算方法相关推荐
- 【25】模型参数量Params与计算量Flops的计算方法
文章目录 1. 推导公式 1.1 CNN Params 1.2 CNN Flops 1.3 Linear Params 1.4 Linear Flops 2. 计算方法 2.1 parameters法 ...
- 深度学习模型FLOPs详解
计算方法 FLOPS: 注意全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度.是一个衡量硬件性能的指标. FLOPs : ...
- Pytorch统计网络参数计算工具、模型 FLOPs, MACs, MAdds 关系
Pytorch统计网络参数 #网络参数数量 def get_parameter_number(net):total_num = sum(p.numel() for p in net.parameter ...
- CNN 模型的参数(parameters)数量和浮点运算数量(FLOPs)是怎么计算的
文章目录: 1 模型参数(parameters)的个数 1.1 模型参数介绍 1.2 常见网络的模型参数个数 1.2 举例如何计算神经网络模型参数 2 FLOPS:每秒浮点运算次数 2.1 `FLOP ...
- 【pytorch】深度学习所需算力估算:flops及模型参数量
目录 计算量的要求是在于芯片的floaps(指的是gpu的运算能力) 参数量对应显存大小选型 常见的英伟达显卡的FLOPS和显存规格 pytorch中的floaps与显存计算方法 计算量的要求是在于芯 ...
- pytorch模型参数信息 计算模型的FLOPs
参考链接:https://blog.csdn.net/tsq292978891/article/details/87918244 打印模型参数信息 在python3环境下安装torchsummary ...
- 芯片模型算力指标TOPS FLOPS MAC MACC MADD关系
1.TOPS(Tera Operations Per Second)每秒万亿次操作 处理器运算能力单位 TOPS是Tera Operations Per Second的缩写,1TOPS代表处理器每秒钟 ...
- 034CSS3盒子模型大小计算方法
一.分类 CSS3 中可以通过 box-sizing属性 来指定盒子模型大小的计算方法,有2个值:即可指定为 content-box.border-box,这样我们计算盒子大小的方式就发生了改变. 可 ...
- FLOPs FLOPS
FLOPS 注意全部大写 是floating point of per second的缩写,意指每秒浮点运算次数.用来衡量硬件的性能. FLOPs 是floating point of operati ...
最新文章
- 算法题:“找出单身狗”--找出一个数组中只出现一次的数字
- 20120520 Linux下mysql的自动备份工具
- 在线项目管理软件leangoo 管理 技术支持
- 使用secondary sort实现数据关联 完整示例代码
- 一个多线程死锁案例,如何避免及解决死锁问题?
- DNS服务器详解--------基础篇
- 配置Memcache服务器并实现主从复制功能(repcached)
- 今天才发现自己美工其实很厉害!
- python游戏编程快速上手豆瓣_Python游戏编程快速上手(第4版)
- 解决方法 svn checkout 更改用户名密码/断网续传
- 自己整理的90分以上最新物联网技术导论期末选择填空大题总考点
- 开上帝视角,其实你也能
- 设计模式-工厂模式-3种-以手机制造工厂为例
- 【毕业设计】python opencv 深度学习 指纹识别算法实现
- mysql 参数set_MySQL--mysqldmp命令参数set-gtid-purged
- 从0到1,用张三的故事讲述一张中学生也能看懂的财务报表
- 高德地图web精准定位
- Ollydbg 1.10's plugin LsMem2CAry.dll
- 第一篇什么都没写的博客
- 机器学习(18)——分类算法(补充)