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使用range函数计算一组数和的方法
May 07 Python
Python使用pylab库实现画线功能的方法详解
Jun 08 Python
教你使用python实现微信每天给女朋友说晚安
Mar 23 Python
浅谈python的深浅拷贝以及fromkeys的用法
Mar 08 Python
django项目中使用手机号登录的实例代码
Aug 15 Python
Python 使用元类type创建类对象常见应用详解
Oct 17 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
解决Jupyter因卸载重装导致的问题修复
Apr 10 Python
DataFrame 数据合并实现(merge,join,concat)
Jun 14 Python
Keras模型转成tensorflow的.pb操作
Jul 06 Python
Django web自定义通用权限控制实现方法
Nov 24 Python
浅析python实现动态规划背包问题
Dec 31 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
用PHP制作静态网站的模板框架(三)
2006/10/09 PHP
比较时间段一与时间段二是否有交集的php函数
2011/05/31 PHP
thinkphp特殊标签用法概述
2014/11/24 PHP
CI框架中数据库操作函数$this->db->where()相关用法总结
2016/05/17 PHP
php遍历目录下文件并按修改时间排序操作示例
2019/07/12 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
dwr spring的集成实现代码
2009/03/22 Javascript
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
2013/06/24 Javascript
Js日期选择自动填充到输入框(界面漂亮兼容火狐)
2013/08/02 Javascript
toggle一个div显示或隐藏且可扩展成自定义下拉框
2013/09/12 Javascript
原生javascript实现图片按钮切换
2015/01/12 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
手机浏览器 后退按钮强制刷新页面方法总结
2016/10/09 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
2016/10/31 Javascript
js实现文本上下来回滚动
2017/02/03 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
JavaScript引用类型Date常见用法实例分析
2018/08/08 Javascript
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
一些Python中的二维数组的操作方法
2015/05/02 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
python删除某个字符
2018/03/19 Python
Flask框架信号用法实例分析
2018/07/24 Python
Python学习之路之pycharm的第一个项目搭建过程
2020/06/18 Python
python 发送邮件的四种方法汇总
2020/12/02 Python
小学数学教学经验交流材料
2014/05/22 职场文书
学校教师读书活动总结
2014/07/08 职场文书
党校学习党性分析材料
2014/12/19 职场文书
2015年实习生工作总结报告
2015/04/28 职场文书
2015年医院药剂科工作总结
2015/05/04 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书
JavaScript中MutationObServer监听DOM元素详情
2021/11/27 Javascript
使用python绘制分组对比柱状图
2022/04/21 Python