深度学习模型复杂度计算详细解析
1关键:
辨析好运算量与参数量等概念,根据不同的操作,逐步分解计算。
2概念辨析区分
2.1 模型复杂度是什么?
模型复杂度通常是指Forward Pass计算量和参数个数。
Forward Pass计算量:描述模型所需要的计算能力
参数个数:描述模型所需要的计算机内存
2.2 FLOPS与FLOPs辨析
FLOPS:全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。
FLOPs:注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。
2.3 运算量与参数量辨析
运算量:要计算的次数
参数量:所需要的参数数量
例如求“(x-y)+xy-xx-y”的运算量与参数量
参数量:2个;运算量:6次
3运算量与参数量计算
3.1全连接层的运算量与参数量
根据操作不同,需要计算的过程主要包含:
1、Linear(包含权重乘法、加法和偏置加法)
2、Activation Function(采用不同激活函数运算次数会不同)
模型示意图:
例子:
假设全连接层输入节点为:Ci 个,输出节点为:Co个,采用Relu激活函数,计算其运算量与参数量。
提示:单个输出节点运算过程:Relu[(x1w1+ x2w2+ x3w3+ ```+ xnwn)+b]
运数量计算:
参数量计算:
3.2 卷积层的运算量与参数量
根据操作不同,需要计算的过程主要包含:
1、Conv、2. BatchNorm、3.Activation function 4. Linear、5. Upsample、6. Poolings
下面对最简单的情况进行举例说明。
3.2.1 输入输出均为单通道
假设图像大小NN,卷积核大小FF,步长S,填充P,则卷积运算量为:
例子:
如图:图像大小为 5x5,卷积核大小为 3x3,步长为1,填充为0,计算卷积运算量与参数量?
运算量计算=153次
1次3x3卷积(求convolved feature某一元素值)所需运算量为:
(3x3)个乘法+(3x3-1)个加法 = 17
要得到右图convolved feature (3x3大小)所需运算量为:17x9 = 153
参数量计算=20个
1个步长参数S、1个填充参数P、卷积核长宽参数33、卷积特征图参数33.
3.2.2 输入输出均为三通道
1 单个卷积核条件(单特征通道)
例子:
如图:图像大小为 5x5x3,卷积核大小为 3x3x3,卷积核个数为1,步长为1,填充为0,计算卷积运算量与参数量?
运算量计算=477次
1次3x3卷积(求convolved feature某一元素值)所需运算量为:
【3x3(9个乘法)+(3x3-1)(8个加法) 】×3(3个图像通道)+2(2个图像通道值加法)=53
要得到右图convolved feature (3x3大小)所需运算量为:53x9 = 477
参数量计算=32个
1个步长参数S、1个填充参数P、卷积核长宽参数333、卷积特征图参数3*3.
2 3个卷积核条件(3个特征通道)
例子:
如图:图像大小为 5x5x3,卷积核大小为 3x3x3,卷积个数为3,步长为1,填充为0,计算卷积运算量与参数量?
运算量计算=1431次
1次3x3卷积(求convolved feature某一元素值)所需运算量为:
【(3x3)个乘法+(3x3-1)个加法 】×3(3个图像通道)+(2个图像通道值加法)=53
要得到1个convolved feature (3x3大小)运算量为:53x9 = 477
因为卷积核个数为3,所以运算量为:459 x3=1431
参数量计算=41个
1个步长参数S、1个填充参数P、卷积核长宽参数333,卷积核数量3,卷积特征图参数3*3.
3.2.3 输入输出均为多通道
例子:
如图:输入大小为 N x N x H,卷积核大小为 FxFxH,卷积个数为C(特征通道数),步长为S,填充为P,计算卷积运算量与参数量?
运算量计算
参数量计算:太懒了,不算了。
同时也可用以下方式表示,按照不同定义计算即可。
参考知乎@弘宇、@留德华叫兽 。学习笔记,如有侵权,随时联系删除。
成文仓促,难免疏漏
以上,欢迎指正,
深度学习模型复杂度计算详细解析相关推荐
- 深度学习模型参数量/计算量和推理速度计算
作者|龟壳 来源 | 知乎 地址 | https://zhuanlan.zhihu.com/p/376925457 本文仅作学术分享,若侵权请联系后台删文处理 本文总结了一些关于模型参数量计算以及推理 ...
- 深度学习的相似度计算 向量之间的相似程度计算 Q K V的注意力权重
https://blog.csdn.net/qq_32797059/article/details/106502737
- 手动/自动/交叉验证评估Keras深度学习模型的性能
Keras是Python中一个的强大而易用的库,主要用于深度学习. 在设计和配置你的深度学习模型时,需要做很多决策.大多数决定必须通过反复试错的方法来解决,并在真实的数据上进行评估. 因此,有一个可靠 ...
- 为什么深度学习需要与边缘计算进行结合?如何结合?
一.深度学习的发展 近年来,机器学习普遍应用于各个领域.我们也被机器学习的应用所包围,比如:在计算机程序.媒体等领域经常接触.本质上,机器学习使用算法从数据中提取有用的信息,然后将其呈现在一个模型中, ...
- AlexNet(深度学习模型)详解
AlexNet是一种深度卷积神经网络,由Alex Krizhevsky.Ilya Sutskever和Geoffrey Hinton于2012年在ImageNet图像分类竞赛中首次引入.这项竞赛是一个 ...
- 对深度学习模型的轻量化处理
前言 模型的压缩技术是指对深度学习模型进行压缩以减小其大小和计算量,以便在资源有限的设备上部署.常用的压缩技术包括模型剪枝.量化.低秩分解等,下面分别简单的介绍一下. 正文 模型剪枝(Model Pr ...
- DSSM、CNN-DSSM、LSTM-DSSM等深度学习模型在计算语义相似度上的应用+距离运算
在NLP领域,语义相似度的计算一直是个难题:搜索场景下query和Doc的语义相似度.feeds场景下Doc和Doc的语义相似度.机器翻译场景下A句子和B句子的语义相似度等等.本文通过介绍DSSM.C ...
- 用Windows电脑训练深度学习模型?超详细配置教程来了
选自towardsdatascience 作者:Ahinand 机器之心编译 编辑:Panda 虽然大多数深度学习模型都是在 Linux 系统上训练的,但 Windows 也是一个非常重要的系统,也可 ...
- tensorflow linux多卡训练_用Windows电脑训练深度学习模型?超详细配置教程来了
公众号关注 "DL-CVer" 设为 "星标",DLCV消息即可送达! 转自 机器之心 虽然大多数深度学习模型都是在 Linux 系统上训练的,但 Window ...
最新文章
- 常见的http状态码(Http Status Code)
- 数量庞大!中国成长型AI企业研究报告
- Android 图片透明度处理代码
- CUDA安装及配置:Windows 7 64位环境
- ASP实例:利用缓存提高数据显示效率
- uniapp怎么调起摄像头拍视频_抖音视频怎么拍?我们总结了10个手机视频拍摄小技巧...
- 自定义 ocelot 中间件输出自定义错误信息
- 下一代Mac mini将率先搭载苹果自研M2系列芯片
- Android 视频展示控件之 SurfaceView、GLSurfaceView、SurfaceTexture、TextureView 对比总结...
- PC批量转换网易ncm音乐
- 网页版在线客服功能实现
- resform3.0_ResForm3.0公益版
- 中国首个“微信身份证”是怎么做到人脸识别误判率百万分之一的?
- excel如何全部取消隐藏_全部隐藏!
- 最新百度地图—POI搜索功能讲解
- 项目经理如何处理中途接手的项目
- lerna使用初体验
- OpenWhisk部署指南
- linux:nohup命令用法
- symbian3SDK怎样能兼容S60第三版五版的工程(转)