pytorch 计算Parameter和FLOP的操作


Posted in Python onMarch 04, 2021

深度学习中,模型训练完后,查看模型的参数量和浮点计算量,在此记录下:

1 THOP

在pytorch中有现成的包thop用于计算参数数量和FLOP,首先安装thop:

pip install thop

注意安装thop时可能出现如下错误:

pytorch 计算Parameter和FLOP的操作

解决方法:

pip install --upgrade git+https://github.com/Lyken17/pytorch-OpCounter.git # 下载源码安装

使用方法如下:

from torchvision.models import resnet50 # 引入ResNet50模型
from thop import profile
model = resnet50()
flops, params = profile(model, input_size=(1, 3, 224,224)) # profile(模型,输入数据)

对于自己构建的函数也一样,例如shuffleNetV2

from thop import profile
  from utils.ShuffleNetV2 import shufflenetv2 # 导入shufflenet2 模块
  import torch 
  
  model_shuffle = shufflenetv2(width_mult=0.5)
  model = torch.nn.DataParallel(model_shuffle)  # 调用shufflenet2 模型,该模型为自己定义的
  flop, para = profile(model, input_size=(1, 3, 224, 224),) 
  print("%.2fM" % (flop/1e6), "%.2fM" % (para/1e6))

更多细节,可参考thop GitHub链接: https://github.com/Lyken17/pytorch-OpCounter

2 计算参数

pytorch本身带有计算参数的方法

from thop import profile
  from utils.ShuffleNetV2 import shufflenetv2 # 导入shufflenet2 模块
  import torch 
  
  model_shuffle = shufflenetv2(width_mult=0.5)
  model = torch.nn.DataParallel(model_shuffle)
  total = sum([param.nelement() for param in model.parameters()])
  print("Number of parameter: %.2fM" % (total / 1e6))

补充:pytorch: 计算网络模型的计算量(FLOPs)和参数量(Params)

计算量:

FLOPs,FLOP时指浮点运算次数,s是指秒,即每秒浮点运算次数的意思,考量一个网络模型的计算量的标准。

参数量:

Params,是指网络模型中需要训练的参数总数。

第一步:安装模块(thop)

pip install thop

第二步:计算

import torch
from thop import profile
net = Model() # 定义好的网络模型
input = torch.randn(1, 3, 112, 112)
flops, params = profile(net, (inputs,))
print('flops: ', flops, 'params: ', params)

注意:

输入input的第一维度是批量(batch size),批量的大小不回影响参数量, 计算量是batch_size=1的倍数

profile(net, (inputs,))的 (inputs,)中必须加上逗号,否者会报错

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Python 相关文章推荐
Python多线程同步Lock、RLock、Semaphore、Event实例
Nov 21 Python
Python实现自动添加脚本头信息的示例代码
Sep 02 Python
轻松理解Python 中的 descriptor
Sep 15 Python
浅谈Python中range和xrange的区别
Dec 20 Python
Python编程argparse入门浅析
Feb 07 Python
Tensorflow实现卷积神经网络的详细代码
May 24 Python
python训练数据时打乱训练数据与标签的两种方法小结
Nov 08 Python
Django ORM 聚合查询和分组查询实现详解
Aug 09 Python
Python collections模块使用方法详解
Aug 28 Python
python利用openpyxl拆分多个工作表的工作簿的方法
Sep 27 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
Mar 10 Python
python 对图片进行简单的处理
Jun 23 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
Mar 04 #Python
python 如何用urllib与服务端交互(发送和接收数据)
Mar 04 #Python
python 求两个向量的顺时针夹角操作
Mar 04 #Python
python 制作磁力搜索工具
Mar 04 #Python
python抢购软件/插件/脚本附完整源码
Mar 04 #Python
Python 求向量的余弦值操作
Mar 04 #Python
django使用多个数据库的方法实例
Mar 04 #Python
You might like
融入意大利的咖啡文化
2021/03/03 咖啡文化
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
用js查找法实现当前栏目的高亮显示的代码
2007/11/24 Javascript
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
js静态方法与实例方法分析
2011/07/04 Javascript
javascript改变position值实现菜单滚动至顶部后固定
2013/01/18 Javascript
jquery 表格的增行删行实现思路
2013/03/21 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
一个JavaScript处理textarea中的字符成每一行实例
2014/09/22 Javascript
简单实现js选项卡切换效果
2016/02/03 Javascript
Angularjs中如何使用filterFilter函数过滤
2016/02/06 Javascript
Angular.js回顾ng-app和ng-model使用技巧
2016/04/26 Javascript
使用three.js 画渐变的直线
2016/06/05 Javascript
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
js实现全选和全不选
2020/07/28 Javascript
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
python实现的jpg格式图片修复代码
2015/04/21 Python
浅谈python中set使用
2016/06/30 Python
python实现跨excel的工作表sheet之间的复制方法
2018/05/03 Python
python之Flask实现简单登录功能的示例代码
2018/12/24 Python
django 中的聚合函数,分组函数,F 查询,Q查询
2019/07/25 Python
python的pstuil模块使用方法总结
2019/07/26 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
歌唱比赛主持词
2014/03/18 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书
2019大学竞选班长发言稿
2019/06/27 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
【海涛dota】偶遇拉娜娅 质量局德鲁伊第一视角解说
2022/04/01 DOTA