神经网络模型计算量 参数量 解释

news/2025/2/7 7:16:16/

1. 概念

计算量(FLOPs)对应我们之前的时间复杂度,计算量要看网络执行时间的长短

PS: 

        FLOPS:全大写,意指每秒浮点运算次数,理解为计算速度,是一个衡量硬件性能的指标。

        FLOPs:s小写,意指浮点运算数,理解为计算量,用来衡量模型的复杂度

        (如果模型FLOPs为X,使用的GPU性能Y FLOPS,意味处理该模型只需X/Y秒)

参数量对应于我们之前的空间复杂度,参数量要看占用显存的量

2. 对硬件要求

  • 计算量的要求是在于芯片的floaps(指的是gpu的运算能力)
  • 参数量的要求是显存大小

3. 计算方式

计算量: 

参数量:

  BatchNorm层: 2N

PS:

        常见模型大小描述方式

        因为:参数都是FP32(4字节)存放,所以模型大小是参数量*4

                   1kb=1024字节;1MB=1024kb;1GB=1024MB;1TB=1024GB

        因此:如果模型参数量为6000万个,则总的字节数是24000万字节,也就是228MB

                                                                                      (24000万/1024/1024)=228MB

4. 代码计算

1) 整体参数量 + 计算量 

import torch
import torchvision
from thop import profilemodel = torchvision.models.alexnet(pretrained=False)dummy_input = torch.randn(1, 3, 224, 224)
flops, params = profile(model, (dummy_input,))
print('FLOPs: ', flops, 'params: ', params)

2)每层参数量 + 整体参数量 + 可训参数量

import torch
import torchvision
from pytorch_model_summary import summarymodel = torchvision.models.alexnet(pretrained=False)
print(model)dummy_input = torch.randn(1, 3, 224, 224)
print(summary(model, dummy_input, show_input=False, show_hierarchical=False))

输出:

 手动计算(示例)

        Conv2d-1:  3*64*11*11 + 64 = 23296

         Linear-21: 4096*1000 + 1000 = 4097000

5. 常见模型计算量 & 参数量 

模型

参数量(百万个)

模型大小(MB)

计算量(百万)

SqueezeNet

1,248,424

4.8MB

AlexNet

60百万(1e6)

240MB

720 (1*3*224*224)

ResNet101

85百万

340MB

VGG16

138百万

552MB

15300

TSN

20MB

I3D

60MB

ECO

150MB

GPT-3

(OpenAI)

1750亿(1e9)

鹏程. 盘古

(华为)

2000亿(1e9)

8TB

Switch Transformers

(谷歌)

1.6万亿

悟道2.0

(智源)

17500亿

 Reference:

经典神经网络参数的计算【不定期更新】 - 知乎 (zhihu.com)

(36条消息) 深度学习中模型计算量(FLOPs)和参数量(Params)的理解以及四种计算方法总结_紫芝的博客-CSDN博客


http://www.ppmy.cn/news/239554.html

相关文章

R语言参数估计笔记及例题

R语言参数估计 目录 R语言参数估计 1.R语言点估计 1.1定义 1.2 例题 2.R语言正态总体均值区间评估 2.1定义 2.2方差已知时,求置信区间 2.2.1自定义函数 2.2.2例题 2.3方差未知时,求置信区间 2.3.1调用内置函数t.test() 2.3.2例题 3.R语言单…

Libsvm网格参数寻优教程

原文:http://endual.iteye.com/blog/1262010 首先下载Libsvm、Python和Gnuplot: l libsvm的主页http://www.csie.ntu.edu.tw/~cjlin/libsvm/上下载libsvm (我自己用2.86版本) l python的主页http://www.python…

SVM模型应用(四)SVM模型的超参数选择

SVM模型超参数优化目前常用的方法是让C和g在一定的范围内取值,对于取定的c和g,把训练集作为原始数据集利用K-CV方法得到在此对c和g组合下验证集的分类准确率,最终取得训练集验证分类准确率最高的那组c和g作为最佳参数。对于可能会有多组的c和…

yolov4训练网络配置及参数配置

1、网络模型 主要修改classes和其上一层网络层输出(classes5)*3->(classes[xmin,ymin,xmax,ymax,c])*Scalar lr_rate和max_batches自行配置,建议初始学习率设置为0.001,max_batchesclasses*2000 [net] # Testing #batch1 #s…

Highcharts的选项配置参数

Chart:图表区选项 Chart图表区选项用于设置图表区相关属性。 参数描述默认值backgroundColor设置图表区背景色#FFFFFFborderWidth设置图表边框宽度0borderRadius设置图表边框圆角角度5renderTo图表放置的容器,一般在html中放置一个DIV,获取D…

非参数统计检验

非参数统计的方法用于总体分布未知的情形,其目的在于检验一个变量的分布在不同组中是否具有相同的位置参数。 NPAR1WAY语句 功能 格式: proc npar1way data数据集名 [选项]; by 变量名; class 变量名; var 变量名; run;注: proc的选项&am…

相机内参数和外参数

求解相机内参:相机标定 求解相机外参:相机位姿估计 相机内参数是与相机自身特性相关的参数,比如相机的焦距、像素大小等; 相机外参数是在世界坐标系中的参数,比如相机的位置、旋转方向等。 相机标定(或摄…

GY85使用

这是一个针对惯性测量模组(IMU)的Arduino驱动代码,目前只支持GY85。惯性测量模组是一种用于测量和报告设备速度、方向和重力的电子设备,它能将加速度计和陀螺仪,甚至是磁场强度计等传感器的数据进行综合。GY85在国内是…