flops什么意思中文_不知道什么是FLOPs?进来瞧瞧~
Date: 2020/07/27
Coder: CW
Foreword:
相信诸位炼丹者在看paper时会注意到出现有 'FLOPs' 这个词,那么 FLOPs 究竟是什么意思呢?它是如何计算的?有哪些开源工具可供使用?
Outline
I. 什么是FLOPs?
II. 如何计算FLOPs?
III. 相关开源工具
1、torchstat
2、torchscan
3、其它
什么是FLOPs?
FLOPs(Floating Point Operations)即 浮点运算次数,常用于评估模型/算法的计算量(复杂度)。注意,此处s必须小写!因为大写S对应的是另一个概念——FLOPS(Floating Point Operations per Second),意为每秒浮点运算次数,代表的是一种运算速率,通常用于衡量硬件的性能指标。
如何计算FLOPs?
对于卷积层(不考虑激活函数的运算),令:
:表示卷积核大小;
:输入通道数;
:输出通道数;
:输出特征图的高和宽
那么生成输出特征图的一个单元(单通道)则需要:
-
次乘法
-
次加法
若算上偏置(bias),那么还需额外的一次加法,于是就有
次加法,与乘法次数一致。
由于输出特征图尺寸为(
)且通道数为
,因此该卷积层的运算次数为:
这是一个卷积层的乘加运算次数(MAdd)。
有些时候会将一次乘法和一次加法合并对应一次FLOP,那么一个卷积层的FLOPs就为
。在这种方式下,可将卷积核和输出特征图都分别看作立方体,那么FLOPs就恰好是两者体积的乘积。
卷积运算的FLOPs
同理,对于一个全连接层(不计bias),我们不难推出其FLOPs(MAdd)为:
其中
分别对应输入、输出神经元个数。
相关开源工具
1、torchstat
官方介绍:This is a lightweight neural network analyzer based on PyTorch.
This tools can show:
Total number of network parameters
Theoretical amount of floating point arithmetics (FLOPs)
Theoretical amount of multiply-adds (MAdd)
Memory usage
安装:pip install torchstat
或者使用源码方式:
python3 setup.py install
使用:from torchstat import stat
import torchvision.models as models
model = models.resnet18()
stat(model, (3, 224, 224))
效果(部分截图):
torchstat效果图
可看到这里区分了乘加运算(MAdd)与FLOPs。
2、torchscan
安装:pip install torchscan
使用:>>> import torchvision.models as models
>>> from torchscan import summary
>>> mod = models.resnet18()
>>> summary(mod, (3, 224, 224))
效果(部分截图):
torchscan效果图
注意,这里的FLOPs与torchstat的乘加运算次数(MAdd)对应,而MAC(Multiply-Accumulations)与torchstat的FLOPs对应。
3、其它
其它的还有 flops-counter、torchsummary等,感兴趣的可以自行摸索。
flops什么意思中文_不知道什么是FLOPs?进来瞧瞧~相关推荐
- origin9语言设置中文_英雄联盟手游怎么设置繁体 LOL手游繁中设置方法?_英雄联盟手游...
英雄联盟手游终于在海外部分地区上线了,不过玩海外服有一点不好,就是界面都是外文,比如英文.日文.韩文等等.那么英雄联盟手游怎么设置繁体中文呢,这里就来给大家介绍一下LOL手游繁中设置方法,将游戏语言切 ...
- python之禅 中文_《Python之禅》中对于Python编程过程中的一些建议
<Python之禅>中对于Python编程过程中的一些建议 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: <Python之禅>中对于Pyt ...
- mysql 字段 中文_如何配置mysql支持中文字段名与中文字段
匿名用户 1级 2018-11-18 回答 中文字段名都可以了 但是中文记录不行 奇怪啊 mysql>; create table a (a char(20)); Query OK, 0 row ...
- java换成中文_如果我们的编程替换成中文会变成怎样?
首先大概的看一下中文编码: 你以为会写中文就会编程吗?这就像你以为会写汉字就会写出好文章一样.编程是和机器沟通,因此要用机器的语言而不是人类的语言.最早的程序就是0和1的数字,不是中文也不是英文.以前 ...
- java 8进制串转中文_为什么不能用中文进行编程?而英文就可以
前些天大雄无意间听见 几个线下班小伙伴说 真的是无(te)意(di)的 "我要补英文" "对,英文真的很重要" "如果编码用中文就好了" . ...
- kodi刮削器 中文_教你PLEX插件播放4K不能使用KODI解码导致卡顿的解决办法
文章作者Hao4K用户@nothero 自从买了这个索尼9500g,三天两头的出问题,而且还经常重启,经常卡顿.大法的画质确实不错,但是这系统稳定性实在是不敢恭维... 最近装了一个KODI-PLEX ...
- charles 中文_抓包工具--charles(青花瓷)及获取AppStore数据包
#### 1.Charles Charles是一个HTTP代理/ HTTP监视器/反向代理,使开发人员能够查看他们的机器和Internet之间的所有HTTP和SSL / HTTPS通信.这包括请求.响 ...
- python读取文件名有中文_[请教]python的中文文件名处理
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 3 楼的可以用 sys.getfilesystemencoding 检测,但由於文件系统的差异,文件名 100% 无损转还是不太可,比如很多 *nix 的 ...
- tail怎么写中文_为什么不能用中文进行编程,而英文却可以?程序员的分析很透彻...
很多人都认为程序员很厉害,而且心中对他们有一丝敬佩,那这么复杂的程序,他么究竟是怎么写出来的呢?不知道大家有没有注意一个细节,那就是编程都是英文,如果用中文去编译的话,那就是出现很多"bug ...
最新文章
- 获取可视区域高度赋值给div(解决document.body.clientHeight的返回值为0的问题)
- 任我行二 - 高德地图篇1 - 显示地图
- 26.进程空间和线程空间
- 紧致差分的matlab程序,对流占优扩散方程的一种新C—N 紧致差分格式
- Django中的shell,和数据增删查改
- lede更改软件源_Linux的上传和下载——Ubuntu中软件的安装和ftp服务器的搭建
- 您会后悔对Lambdas应用重载!
- 实验一 链式存储结构的基本操作
- 图论 —— 网络流 —— 基本概念与建模技巧
- UIView的Touch事件UIControlEvents详解
- noip模拟赛 猜数字
- C语言编程QQ管理系统,c语言制作学生管理系统srrpqq67.doc
- MCSA / Windows Server 2016 安装Desktop Experience
- 山石岩读丨前沿领域探析——汽车CAN总线协议详解及攻击面分析
- 计算机进去bios方式,各种电脑进入BIOS方法汇总|进入bios的方法大全
- 计算机图形学(六)-光栅化、采样、走样与反走样、滤波与卷积
- matlab画二项式随机变量的pmf,概率中的PDF,PMF,CDF
- 测试开发:Docker常用命令分享
- MySQL修改数据表中的字段名
- telnet无法打开到主机的连接。 在端口 23: 连接失败