评估计算量指标

  • 每秒浮点操作次数FLOPS(FLoating point OPerations per Second),来衡量GPU的运算能力。
  • 乘加数MACC(Multiply-ACCumulate operation),或者叫MADD,来衡量模型的计算量。

模型最终的的速度,不仅仅是和计算量多少有关系,还和诸如内存带宽、优化程度、CPU流水线、Cache之类的因素也有很大关系。

全连接层计算量和参数量估计

对于输入为 I I I,输出为 J J J的全连接层,其权重 W W W存储在 I × J I \times J I×J的矩阵中。

  • 计算量为 I × J I \times J I×J MACC 或 ( 2 I − 1 ) × J (2I-1) \times J (2I1)×J FLOPS。
  • 它的参数分别是权重 W W W和偏置 b b b,所以参数量为 I × J + J = ( I + 1 ) × J I \times J + J=(I+1) \times J I×J+J=(I+1)×J

激活函数计算量

激活函数没有参数,所以参数量为0。

  • ReLU计算操作为 y = max ⁡ ( x , 0 ) y=\max(x,0) y=max(x,0),所以对于输出为 J J J个神经元,计算量为 J J J FLOPS。
  • Sigmoid计算操作为 y = 1 / ( 1 + exp ⁡ ( − x ) ) y=1/(1+\exp(-x)) y=1/(1+exp(x)),所以对于输出为 J J J个神经元,计算量为 J × 4 J \times 4 J×4 FLOPS。
  • Tanh计算操作为 y = ( exp ⁡ ( x ) − exp ⁡ ( − x ) ) / ( exp ⁡ ( x ) + exp ⁡ ( − x ) ) y=(\exp(x)-\exp(-x))/(\exp(x)+\exp(-x)) y=(exp(x)exp(x))/(exp(x)+exp(x)),所以对于输出为 J J J个神经元,计算量为 J × 8 J \times 8 J×8 FLOPS。

LSTM计算量和参数量估计

LSTM包含4个非线性变换,每一种非线形变换可视作一个全连接层。令 E E E=embedding_size, H H H=hidden_size。其中,第一层是 x i x_i xih i h_i hi的结合,维度就是 E + H E+H E+H,第二层就是输出层,维度为 H H H。四个非线性变换中,还会对全连接层的输出进行激活函数计算(三个Sigmoid和一个Tanh)。除此之外,LSTM除了在四个非线性变换中的计算,还有三个矩阵乘法(不是点积)、一个加法、一个Tanh计算。

  • 计算量为 ( E + H ) × H × 4 (E+H) \times H \times 4 (E+H)×H×4 MACC,或 E × H × 8 + H × ( H + 20 ) E \times H \times 8 + H \times (H+20) E×H×8+H×(H+20) FLOPS。
  • 参数量为: ( ( E + H ) × H + H ) × 4 ((E+H) \times H +H) \times 4 ((E+H)×H+H)×4

卷积层计算量和参数量估计

对于输入为 H i n × W i n × C i n H_{in} \times W_{in} \times C_{in} Hin×Win×Cin,输出为 H o u t × W o u t × C o u t H_{out} \times W_{out} \times C_{out} Hout×Wout×Cout的卷积层,输出的每一个像素对应了一个立体卷积核 K × K × C i n K \times K \times C_{in} K×K×Cin

  • 计算量为 K × K × C i n × H o u t × W o u t × C o u t K \times K \times C_{in} \times H_{out} \times W_{out} \times C_{out} K×K×Cin×Hout×Wout×Cout MACC。
  • 参数量为 K × K × C i n × C o u t + C o u t K \times K \times C_{in} \times C_{out} + C_{out} K×K×Cin×Cout+Cout

深度可分离卷积层

深度可分离卷积分为两个操作,深度卷积和 1 × 1 1\times1 1×1常规卷积。

  • 计算量为: K × K × C i n × H o u t × W o u t + C i n × H o u t × W o u t × C o u t = C i n × H o u t × W o u t × ( K × K × C o u t ) K \times K \times C_{in} \times H_{out} \times W_{out} + C_{in} \times H_{out} \times W_{out} \times C_{out}=C_{in} \times H_{out} \times W_{out} \times (K \times K \times C_{out}) K×K×Cin×Hout×Wout+Cin×Hout×Wout×Cout=Cin×Hout×Wout×(K×K×Cout)
  • 参数量为 K × K × C i n + 1 × 1 × C i n × C o u t = C i n × ( K × K + C o u t ) K \times K \times C_{in} + 1 \times 1 \times C_{in} \times C_{out}=C_{in} \times (K \times K + C_{out}) K×K×Cin+1×1×Cin×Cout=Cin×(K×K+Cout)

Batch normalization

BN的计算操作为 z = γ y − μ σ 2 + ϵ + β z = \gamma \frac{y-\mu}{\sqrt{\sigma^{2}+\epsilon}}+\beta z=γσ2+ϵ

yμ+β。每个通道都有自己的 γ , β , μ , σ 2 \gamma,\beta,\mu,\sigma^{2} γ,β,μ,σ2,因此,如果卷积层的输出中有 C C C个通道,则BN层将学习 C × 4 C \times 4 C×4个参数。

池化层

池化操作不使用点积,因此不能用MACC测量。这种附加层的计算量与卷积层、全连接层相比非常小,通常可以忽略不计。

Concate层

连接操作通常不需要单独的复制步骤,不需任何参数和计算。

【学习笔记】神经网络的计算量和参数量估计相关推荐

  1. OpenCV 学习笔记(颜色直方图计算 calcHist)

    OpenCV 学习笔记(颜色直方图计算 calcHist) 最近在看一本OpenCV 的书,书名是 <OpenCV 3 Computer Vision Application Programmi ...

  2. 学习笔记之——晶振选型主要参数和外接匹配电容的计算

    文章目录 1. 晶振选型主要参数介绍 2. 晶振外匹配电容CL1及CL2计算方法 3. 晶振pcb电路设计注意事项 4. 晶振不起振分析及解决 1. 晶振选型主要参数介绍 我们常说的晶振,包含两种: ...

  3. Goodfellow深度学习笔记--神经网络架构

    目录 损失函数 指标选择 交叉熵 交叉熵代码 使用最大似然的优势 损失函数的具体形式 用于高斯输出分布的线性单元 用于Bernoulli输出分布的sigmoid单元 用于Multinoulli输出分布 ...

  4. 1.2)深度学习笔记------神经网络的编程基础

    目录 1)Binary Classification 2)Logistic Regression 3)Logistic Regression Cost Function 4)Gradient Desc ...

  5. 深度学习笔记(十四)—— 超参数优化[Hyperparameter Optimization]

      这是深度学习笔记第十四篇,完整的笔记目录可以点击这里查看.      训练神经网络会涉及到许多超参数设置.神经网络中最常见的超参数包括: the initial learning rate lea ...

  6. 吴恩达深度学习笔记——神经网络与深度学习(Neural Networks and Deep Learning)

    文章目录 前言 传送门 神经网络与深度学习(Neural Networks and Deep Learning) 绪论 梯度下降法与二分逻辑回归(Gradient Descend and Logist ...

  7. Deep Learning(深度学习)学习笔记整理系列之LeNet-5卷积参数个人理解

    一个典型的例子说明 一种典型的用来识别数字的卷积网络是LeNet-5(效果和paper等见这).当年美国大多数银行就是用它来识别支票上面的手写数字的.能够达到这种商用的地步,它的准确性可想而知.毕竟目 ...

  8. 学习笔记——神经网络压缩

    以下内容来源与李宏毅老师的课程. 文章目录 一.Network Pruning--网络剪枝 二.Knowledge Distillation--知识蒸馏 三.Parameter Quantizatio ...

  9. ML学习笔记- 神经网络

    神经网络 有的模型可以有多种算法.而有的算法可能可用于多种模型.在神经网络中,对外部环境提供的模式样本进行学习训练,并能存储这种模式,则称为感知器;对外部环境有适应能力,能自动提取外部环境变化特征,则 ...

  10. 花书学习笔记--神经网络实践方法论

    目录 性能度量 准确率 查准率precision和召回率recall 覆盖( coverage) 基准模型 如何判断遇到的是什么问题 Model Bias(模型偏差) Optimization Iss ...

最新文章

  1. python编程培训-什么是Python?老男孩Python编程培训
  2. python获取命令行参数的方法
  3. linux 工具 SecureCRT 使用 rz 和 sz 命令
  4. rabbitmq(四)、消息丢失问题
  5. java实用教程——组件及事件处理——ItemEvent事件(设置字体类型)
  6. 【渝粤题库】陕西师范大学200301几何学作业(高起本)
  7. Linux内核3.0移植并基于Initramfs根文件系统启动
  8. 《Python Cookbook 3rd》笔记(5.4):读写字节数据
  9. 面试官系统精讲Java源码及大厂真题 - 45 Socket 源码及面试题
  10. 信安教程第二版-第17章网络安全应急响应技术原理与应用
  11. OpenShift - 用CodeReady开发云原生应用(1)- 将可执行Quarkus应用部署到OpenShift
  12. mozilla原代码编译
  13. 2021 上半年软考软件设计师真题完整版
  14. Spark学习资料汇总
  15. 如何设置csdn为谷歌浏览器默认搜索引擎
  16. PHP accesstoken失效,微信开发-ACCESS TOKEN 过期失效解决方案
  17. 服务器日志显示意外关闭,服务器多次异常关闭,错误日志:计算机已经从检测错误后重新启动。。检测错误: - Microsoft Community...
  18. 这10个实用网站/app,至少让你的效率翻一倍!
  19. java检测自身签名_使用签名检测PDF更改
  20. OpenCV4学习笔记(19)——模板匹配

热门文章

  1. 双系统下 deepin 20.4 解决没有无线驱动的问题
  2. InputManagerService启动流程分析
  3. SOAR的启发式规则建议
  4. 微信小程序中上传文件到baidu bos--亲测有效
  5. 面向金融行业的灾备云平台建设项目实践
  6. kubernates-1.26.1 单机部署 containerd nerdctl
  7. 本科是铁路 能考计算机研究生吗,自考的学历能在铁路系统工作吗
  8. OptiX OSN 3500_V200R013C30_02_zh_31188076.hdx
  9. SQL Server 2008 R2 性能计数器详细列表(一)
  10. Python发展前景怎么样 什么学习方式比较好