社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

(附代码)深度学习卷积网络浮点计算量和参数量的计算

小白学视觉 • 2 年前 • 248 次点击  

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

编者荐语

 

文章作者介绍了深度学习卷积网络的浮点计算量和参数量的计算,还附上了以Pytorch代码框架示例的案例。非常适合大家学习了解,值得一读!

链接丨https://www.zhihu.com/question/65305385


FLOPS:注意全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。FLOPs:注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。


不同的网络算子有不同的计算量,其计算方式也不相同。在卷积神经网络中,主要以卷积层和全连接层为主,其他算子的操作一般比较小,可以忽略不计,算作误差。二者其计算量的计算方式如下:

卷积

  表示卷积核大小,  和   表示输入和输出通道数,  和  表示输出特征图大小。

情况一:乘法+加法+bias

其中n个数相加需要n-1次加法运算。

 情况二:乘法+加法,无bias

 情况三:乘法,不计入加法

参数量:

 

全连接层

I表示输入维度,O表示输出维度

情况一:乘法+加法+bias

情况二:乘法+加法,无bias

情况三:乘法,不计入加法 

参数量: 


计算代码--以PyTorch框架为例

第一个推荐的计算库是 thop, 简单好用

① 安装:

推荐从作者的github直接安装最新版本。

pip install --upgrade git+https://github.com/Lyken17/pytorch-OpCounter.git


② 使用:

#计算from torchvision.models import resnet50from thop import profilemodel = resnet50()dummy_input = torch.randn(1, 3, 224, 224)macs, params = profile(model, inputs=(dummy_input, ))#输出from thop import clever_formatmacs, params = clever_format([macs, params], "%.3f")


第二个推荐微软的nni包

nni中有个计算网络模型计算量和参数量的小工具,使用起来也非常简单,并能输出每一层的计算量和参数量。

① 安装:

pip install --upgrade nni

② 使用:

from torchvision.models import resnet18from nni.compression.pytorch.utils.counter import count_flops_paramsmodel = resnet18()dummy_input = torch.randn(1, 3, 224, 224)flops, params, results = count_flops_params(model, dummy_input)



总结:

浮点计算量在一定程度上能估计模型的计算复杂度,但是却不一定能代表真实的推理时间。

这主要是因为,不同的硬件或框架对不同算子的优化程度不同,即使计算量大但计算速度也可能比较快,所以FLOPs这一指标只是网络计算复杂度的一个参考,有理论意义。

好消息!

小白学视觉知识星球

开始面向外开放啦👇👇👇




下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/151087
 
248 次点击