深度学习中计算量和参数量介绍、实现代码、例子

news2024/10/6 20:37:52

计算量 参数量 模型内存

    • 前言
    • 1 计算量和参数量
    • 2 统计计算量、参数量和模型内存
    • 3 源码分享
      • 3.1 thop实现
    • 3.2 ptflops实现
    • pytorch_model_summary实现各层参数量统计
    • 4 总结

前言

理清FLOPSFLOPs大写S代表的是显卡的运算性能,小写s代表的是模型的运算次数!
FLOPS是处理器性能的衡量指标,是“每秒所执行的浮点运算次数”的缩写;
FLOPs是算法复杂度的衡量指标,是“浮点运算次数”的缩写,s代表的是复数;
例如:
在这里插入图片描述
红框中的FLOPS是大写,和显卡运算能力有关!
在这里插入图片描述
论文中,写的都是FLOPs,谁会没事在论文中写FLOPS!!

1 计算量和参数量

计算量指的是,我们网络运行时需要的次数,类似于时间复杂度,常见单位是FLOPs,GFLOPs,1GFlops = 1,000Flops
参数量指的是,我们网络中需要学习的参数,类似于空间复杂度,常见单位是M
显卡性能决定是否能带的动计算量,显卡显存决定是否能带的动参数量

2 统计计算量、参数量和模型内存

深度学习中,卷积层占据的计算量和参数量最大,因此给出卷积层的计算量和参数量计算公式:
参数量:

(kernel_size*kernel_size) *channel_input*channel_output

计算量:

(kernel_size*kernel_size*H*W) *channel_input*channel_output
H, W 指的是该层输入的图片大小

模型内存:

因为:一个参数大概就是一个 float4个字节,而 1kb=1024 字节
所以:模型内存 = 参数量 * 4 / 1024 /1024 = 总字节数 / 1024(换算成kb) /1024 (换算成MB)

举例:
在这里插入图片描述
AlexNet:内存计算:60000000*4/1024/1024=228>200Mb

3 源码分享

3.1 thop实现

代码:

from torchvision.models import resnet101
from thop import profile
import torch

net = resnet101(False)
X = torch.randn(1,3,256,256)
flops, params = profile(net, (X, ))
print('flops: ', flops, 'params: ', params)
print('flops: %.2f M, params: %.2f M' % (flops / 1000000.0, params / 1000000.0))

结果:
在这里插入图片描述

3.2 ptflops实现

代码:

import torchvision
from ptflops import get_model_complexity_info

model = resnet101(False)
flops, params = get_model_complexity_info(model, (3, 256, 256), as_strings=True, print_per_layer_stat=True)
print('flops: ', flops, 'params: ', params)

结果:
在这里插入图片描述
这里的GMac约等于GFLOPs,具体结果大家可以搜索一下,这个应该还是有一些出入的!

pytorch_model_summary实现各层参数量统计

代码:

import torch
import torchvision
from pytorch_model_summary import summary

net = resnet101(False)
X = torch.randn(1,3,256,256)
print(summary(net, X, show_input=False, show_hierarchical=False))

结果:
在这里插入图片描述

4 总结

  1. 影响网络参数量,和Batch没关,但是和输入数据的通道数和大小有关,大家可以自己试一下;
  2. 影响网络计算量,和Batch有关,当Batch>1时候,计算量是是Batch=1的Batch倍,大家自己试一下;

参考文献: https://blog.csdn.net/qq_40507857/article/details/118764782
参考文献: https://www.bilibili.com/video/BV1oR4y1X7xZ/?spm_id_from=333.999.0.0


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/83206.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

异构混排在vivo互联网的技术实践

作者:vivo 互联网算法团队- Shen Jiyi 本文根据沈技毅老师在“2022 vivo开发者大会"现场演讲内容整理而成。 混排层负责将多个异构队列的结果如广告、游戏、自然量等进行融合,需要在上下游和业务多重限制下取得最优解,相对复杂和难以控制…

基于外业移动端GIS+CAD在工程行业中的应用

摘要: 本文以广东九建某某高校施工项目前期准备和施工验证工作为依托,以图新地球精准导入CAD为研究对象,总结了一套相对成熟且完善的应用技术。该应用技术能在实际地形和现状数据中迅速找到施工点的大致位置,为前期工程勘测争取足…

【云原生消息中间件】RocketMQ消费者启动(consumer start)流程

目录 一、前言 二、消费者启动(consumer start)流程 1、RocketMQPushConsumer初始化 1.1、InitializingBean的afterPropertiesSet() 实现 1.2、RocketMQPushConsumer初始化 2、DefaultMQPushConsumer#start()逻辑 3、defaultMQPushConsumerImpl.start()逻辑 3.1、预设置…

哈希表题目:“气球”的最大数量

文章目录题目标题和出处难度题目描述要求示例数据范围解法思路和算法代码复杂度分析题目 标题和出处 标题:“气球”的最大数量 出处:1189. “气球”的最大数量 难度 2 级 题目描述 要求 给你一个字符串 text\texttt{text}text,你需要…

无线通信信号传输模型

1. 概述 在移动通信网的规划阶段和网络优化期间,最重要的传播问题是路径损耗,它代表大尺度传播特性,具有幂定律的传播特征。路径损耗是移动通信系统规划设计的一个重要依据,对蜂窝设计中的覆盖范围、信噪比、远近效应都有影响。因…

css色彩主题适配思路

网站主题,之前一直考虑的是通过替换css文件来实现,这种方式虽然可以,但不够方便。毕竟要写两套css主题,需要花费足够多的时间来适配。 后来琢磨出了一点东西出来,发现通过修改root里的css变量来实现,比较优…

计算机研究生就业方向之去银行券商信息技术部门

我一直跟学生们说你考计算机的研究生之前一定要想好你想干什么,如果你只是转码,那么你不一定要考研,至少以下几个职位研究生是没有啥优势的: 1,软件测试工程师(培训一下就行) 2,前…

NR HARQ(一)概述

HARQ是MAC层的快速重传机制,5G部分HARQ相关内容分布在38.331,38.321,38.213,38.214,38.212,38.211等spec中,这篇仅仅针对NR HARQ 进行简单的概括梳理。 NR中上下行HARQ均为异步HARQ;NR中每个HARQ反馈信息可以针对一个上/下行 TB块&#xff0c…

PDF文件怎么打印?分享两种打印方法

如何将PDF文件打印出来呢?大家在使用PDF文件的时候,在确定一份文件没有问题的时候,会选择将文件打印出来使用,有很多小伙伴身边有打印设备,但是不知道怎么打印,今天小编给大家分享两种打印方法,…

Resolution-robust Large Mask Inpainting with Fourier Convolutions 阅读笔记

基于傅里叶卷积的鲁棒分辨率大Mask修补 WACV 2022 论文链接 代码链接 图1:本文提出的方法可成功修复大区域,并很好处理具有复杂重复结构的图像。该方法在256256低分辨率下训练也能泛化到高分辨率图像上。 摘要: 现代图像修复技术主要受阻于大…

基于intel平台车载M12网管交换机方案,13路网口,支持bypass功能

概述:XM-5130是二层网管型以太网交换机,该产品前面板提供13路100M自适应以太网接口、4路车辆间带链路聚合及bypass功能的以太网接口,接口通过M12端子形式提供。该产品适用于振动、温度、湿度、电源波动变化大、电磁干扰复杂的恶劣工作环境。设…

传统大型国企云原生转型,如何解决弹性、运维和团队协同等问题?

作者:王彬、杏祉尧、黄枫 项目背景 贵州酒店集团有限公司于 2019 年 2 月 28 日注册成立,是经贵州省人民政府批准并授权省国资委履行出资人职责的省管大一型企业,全资及控股子企业 23 家,自营及委管酒店(项目&#x…

Nacos的持久化和集群部署

###目前网络模式为:bridge 1.docker mysql:5.7的持久化存储及远程连接 1.下拉镜像 docker pull mysql/mysql-server:5.7 注:后面的mysql标签是版本号,可选择,有:5.5/5.6/5.7/8.0 2.在宿主机中相关目录&#…

单片机内部组成

目录 中央处理器(CPU) 内部数据存储器(128B RAM) 内部程序存储器(4KB ROM) 定时/计数器 可编程I/O口 串行接口 中断控制系统 时钟电路 中央处理器(CPU) 中央处理器是单片机的…

测试工作干了7年,却被实习生代替,是实习生太牛了,还是我们太弱了?

前几天有个朋友向我哭诉,说她在公司工作(软件测试)了7年了,却被一个实习生代替了,该何去何从? 这是一个值得深思的问题,作为职场人员,我们确实该思考,我们的工作会被实习…

详解文件篇(待更)

目录前言一、背景知识1.文件的真面目2.对文件进行的操作3.所谓的打开文件究竟是在干啥?4.文件可能存在的位置?5.文件操作的幕后主使者二、复习C语言中的相关文件操作1. 源代码:形成一个file.txt的文件2. 以"r"的方式打开文件3. 以&…

C++异常详解

文章目录前言一、C语言传统的处理错误的方式二、C异常概念三、异常的使用3.1 异常的抛出和捕获3.2 异常的重新抛出3.3 异常安全3.4 异常规范四、C标准库的异常体系五、自定义异常体系六、异常的优缺点C异常的优点C异常的缺点总结前言 正文开始! 一、C语言传统的处理…

大数据:Hive3.x安装部署和配置

文章目录Hive 简介一,Hive 下载和安装1)下载hive2)安装hive二,Hive 部署1)添加hive-site.xml配置2)上传mysql jdbc驱动到hive安装包lib下3)初始化元数据库4)启动hive5)be…

数字时代,你还不了解数据仓库吗?

事实上,很多人在看到数据仓库的第一眼,就把数据仓库当成了数据库。当然这也很正常,毕竟从名字来看这两者确实区别不大,真正区分两者的是定位、作用等更深一层的东西。今天我们就来详细了解一下数据仓库,从概念、特点、…

【网络】一文带你了解计算机网络基础

我们在学校中,相信大家都学过计算机四门必修课之一的计算机网络,那么今天简单的总结一下计算机网络的基础和原理,有需要朋友,可以点赞收藏。 一文带你了解计算机网络基础1、 网络 7 层架构2、 TCP/IP原理2.1 网络访问层(Network A…