通俗易懂理解CNN卷积神经网络模型的参数量和计算量
一、参考资料
神经网络参数量、计算量(FLOPS)、内存访问量(MAC)计算详解
5种方法获取Torch网络模型参数量计算量等信息
二、参数量与计算量相关介绍
1. 为什么要统计模型参数量和计算量
- 好的网络模型不仅要求精度准,还要要求模型的参数量和计算量不大,才能有利于部署
- 统计模型的参数量和计算量可以用于不同网络模型之间的对比分析
- 有的模型虽然参数量相同,但是可能因为连接方式和结构等不同而导致计算量不同
2. 计算量与参数量的概念
- 计算量是指网络模型需要计算的运算次数,参数量是指网络模型自带的参数数量多少;
- 计算量对应时间复杂度,参数量对应于空间复杂度;
- 计算量决定了网络执行时间的长短,参数量决定了占用显存的大小。
3. 卷积层
3.1 参数量
对于卷积层来说,参数量就是卷积核里所有参数的数量。
假设,每个卷积核的尺寸是 D K ∗ D K ∗ M D_K * D_K*M DK∗DK∗M,一共有N个卷积核,所以标准卷积的参数量为:
如果考虑bias偏置项,则参数量为: D K ∗ D K ∗ M ∗ N + N D_K * D_K * M * N + N DK∗DK∗M∗N+N
如果不考虑bias偏置项,则参数量为: D K ∗ D K ∗ M ∗ N D_K * D_K * M * N DK∗DK∗M∗N
3.2 计算量
对于卷积层来说,我们得到的特征图都是进行一系列的乘加运算得到的。
假设,每个卷积核的尺寸是 D K ∗ D K ∗ M D_K * D_K * M DK∗DK∗M,一共有N个卷积核,输出的特征图尺寸是 D F ∗ D F D_F * D_F DF∗DF。
一次卷积乘法运算次数为: D K ∗ D K ∗ M D_K * D_K * M DK∗DK∗M
一次卷积加法运算次数为: D K ∗ D K ∗ M − 1 ( 27 个数相加,做 26 次加法运算 ) D_K * D_K * M-1 \quad \textcolor{red}{(27个数相加,做26次加法运算)} DK∗DK∗M−1(27个数相加,做26次加法运算)
一共进行 D F ∗ D F ∗ N 次卷积运算 ( 输出 f e a t u r e m a p 大小为 D F ∗ D F ∗ N ) D_F * D_F*N \ 次卷积运算 \quad \textcolor{red}{(输出feature \ map大小为D_F * D_F*N)} DF∗DF∗N 次卷积运算(输出feature map大小为DF∗DF∗N)
乘加运算总次数: ( 2 ∗ D K ∗ D K ∗ M − 1 ) ∗ ( D F ∗ D F ∗ N ) (2*D_K * D_K * M-1)*(D_F * D_F*N) (2∗DK∗DK∗M−1)∗(DF∗DF∗N)
通常,标准卷积的计算量只考虑乘法运算: D K ∗ D K ∗ M ∗ N ∗ D F ∗ D F D_K * D_K * M * N * D_F * D_F DK∗DK∗M∗N∗DF∗DF。
3.3 内存访问量MAC
输入: D K ∗ D K ∗ M D_K * D_K * M DK∗DK∗M
输出: D F ∗ D F ∗ N D_F * D_F * N DF∗DF∗N
权重: D K ∗ D K ∗ M ∗ N D_K * D_K * M * N DK∗DK∗M∗N
那么,上述三项之和为MAC: D K ∗ D K ∗ M + D F ∗ D F ∗ N + D K ∗ D K ∗ M ∗ N D_K * D_K * M + D_F * D_F * N + D_K * D_K * M * N DK∗DK∗M+DF∗DF∗N+DK∗DK∗M∗N
4. 全连接层
4.1 参数量
假设,输入 C i C_i Ci 个神经元,输出 C o C_o Co 个神经元。
如果考虑bias偏置项,则参数量为: C i ∗ C o + C o C_i * C_o + C_o Ci∗Co+Co
如果不考虑bias偏置项,则参数量为: C i ∗ C o C_i * C_o Ci∗Co
4.2 计算量
假设,输入 C i C_i Ci 个神经元,输出 C o C_o Co 个神经元。
一个神经元乘法运算次数为: C i C_i Ci
一个神经元加法运算次数为: C o C_o Co
乘加运算总次数为: ( 2 ∗ C i − 1 ) ∗ C o (2*C_i - 1)*C_o (2∗Ci−1)∗Co
4.3 内存访问量MAC
输入: C i C_i Ci
输出: C o C_o Co
权重: C i ∗ C o C_i*C_o Ci∗Co
那么,上述三项之和为MAC: C i + C o + C i ∗ C o C_i+C_o+C_i*C_o Ci+Co+Ci∗Co
BN层
参数量:KaTeX parse error: Undefined control sequence: \quat at position 7: 2*C_i \̲q̲u̲a̲t̲ ̲\textcolor{red}…
相关文章:

通俗易懂理解CNN卷积神经网络模型的参数量和计算量
一、参考资料 神经网络参数量、计算量(FLOPS)、内存访问量(MAC)计算详解 5种方法获取Torch网络模型参数量计算量等信息 二、参数量与计算量相关介绍 1. 为什么要统计模型参数量和计算量 好的网络模型不仅要求精度准࿰…...
npm工具使用方法介绍
npm 使用方法 文章目录 npm 使用方法安装 npm初始化项目安装依赖更新依赖卸载依赖发布包其他命令下载相关 npm 是 Node.js 的包管理工具,用于管理 Node.js 项目的依赖关系。npm 提供了丰富的命令和功能,可以帮助开发者快速构建和部署 Node.js 应用程序。…...
使用Python批量修改PPT字体和提取全部文字到word
目录 一、修改PPT中每一页的字体二、将文本框中的字都放到word里 将一份PPT的每一页字体、大小、是否加粗都统一,是一个常见需求。特别是字体统一是高频、热点需求。在python操控PPT常用库python-pptx中有一个bug,对字体的修改只能修改数字和英文字母&am…...
Debezium系列之:在K8s集群中部署Debezium Operator运行Debezium Server的详细步骤
Debezium系列之:在K8s集群中部署Debezium Operator运行Debezium Server的详细步骤 一、背景二、目标三、准备环境四、运行本地 Kubernetes 集群五、认识K8s集群部署工具kind六、认识Kubernetes Operator六、安装docker七、安装kind八、安装kubectl九、使用kind创建k8s集群十、…...

并行和并发有什么区别?
并行和并发 并行和并发最早其实描述的是 Java 并发编程里面的概念。他们强调的是 CPU 处理任务的能力。简单来说: 并发,就是同一个时刻,CPU 能够处理的任务数量,并且对于应用程序来说,不会出现卡顿现象。并行&#x…...

第2篇 机器学习基础 —(3)机器学习库之Scikit-Learn
前言:Hello大家好,我是小哥谈。Scikit-Learn(简称Sklearn)是Python 的第三方模块,它是机器学习领域当中知名的Python 模块之一,它对常用的机器学习算法进行了封装,包括回归(Regressi…...

正点原子嵌入式linux驱动开发——Linux SPI驱动
到目前为止的学习笔记,已经介绍了Linux下的platform总线框架、I2C总线框架,本篇笔记将介绍Linux下的SPI总线框架。与I2C总线一样,SPI是物理总线,也是一种很常用的串行通信协议。本章就来学习如何在Linux下编写SPI总线接口的设备驱…...

【计算机视觉】相机
文章目录 一、原始的相机:针孔相机(Pinhole Camera)二、针孔相机的数学模型三、真实相机四、透镜的缺陷 我的《计算机视觉》系列参考UC Berkeley的CS180课程,PPT可以在课程主页看到。 成像原理 一、原始的相机:针孔相机…...

Spring的条件注解,一篇文章盘得清清楚楚明明白白
前言 在Spring中,条件注解可根据特定的条件来决定是否创建或配置Bean,这些条件可以基于类、属性、环境等因素。通过使用条件注解,我们可以在Spring容器中更加灵活地管理和控制组件的创建和注入,帮助我们更加灵活地管理和控制Bean…...

Oracle (7)Online Redo Log Files
目录 一、Oracle Online Redo Log Files及其相关内容介绍 1、Online Redo Log Files简介 2、Online Redo Log Files特点 3、Online Redo Log Files文件组 4、多路复用文件 5、联机重做日志文件工作方式 6、LGWR什么时候写重做 7、LS和LSN 8、删除Redo文件成员 9、删除…...

物联网AI MicroPython传感器学习 之 PAJ7620手势识别传感器
学物联网,来万物简单IoT物联网!! 一、产品简介 手势识别传感器PAJ7620u2是一款集成3D手势识别和运动跟踪为一体的交互式传感器,传感器可以在有效范围内识别手指的顺时针/逆时针转动方向和手指的运动方向等。它可以识别13种手势&a…...

Affinity Photo 2.2.1 高端专业Mac PS修图软件
Affinity Photo Mac中文版是一款面向专业摄影师和其他视觉艺术家的专业图像处理软件,拥有众多专业高端功能,如Raw处理、PSD导入和导出、16位通道的编辑和ICC色彩管理以及兼容大量图片格式。是现在最快、最顺、最精准的专业修图软件。Affinity Photo Mac是…...

微服务-统一网关Gateway
网关的作用 对用户请求做身份认证、权限校验将用户请求路由到微服务,并实现负载均衡对用户请求做限流 搭建网关服务 创建新module,命名为Gateway,引入依赖(1.SpringCloudGateway依赖;2.Eureka客户端依赖或者nacos的服…...

【音视频|wav】wav音频文件格式详解
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...

网络工程综合试题(二)
1. SR技术有哪些缺点? SR(Segment Routing)技术是一种新兴的网络编程技术,它具有很多优点,但也存在一些缺点,包括: 部署复杂性:SR技术需要对网络进行改造和升级,包括更新…...

Android JNI/NDK 入门从一到二
1. 前言 最基础的创建JNI接口的操作,可以直接看这篇文章 : 第一个Android JNI工程, 本文会基于掌握创建JNI接口的操作的基础之上,来入门JNI/NDK。 2. 在JNI中打印日志 2.1 添加log模块 记得CMake中有log模块,不然编译不过 ta…...

吃瓜教程3|决策树
ID3算法 假定当前样本集合D中第k类样本所占比例为pk,则样本集合D的信息熵定义为 信息增益 C4.5算法 ID3算法存在一个问题,就是偏向于取值数目较多的属性,因此C4.5算法使用了“增益率”(gain ratio)来选择划分属性 CA…...

springboot动态数据源【非伪数据源】
说明:本文章的数据源不是在配置文件中配置两个或多个数据源,在业务方面对这些数据源来回切换,本文章中的数据源是可以动态添加,修改,切换的,废话不多说。 先看工程图: 1.pom.xml文件 <?x…...

如何改善设备综合效率(OEE)并提高工厂的生产力
在现代制造业中,提高设备综合效率(Overall Equipment Efficiency,OEE)是企业追求高效生产和优化生产能力的重要目标之一。OEE是一个关键的绩效指标,可以帮助企业评估设备的利用效率、生产效率和质量水平。本文将从三个…...
一文接入Android阿里Sophix热更新
最近公司项目渐趋成熟,已经不需要经常更新版本,并且更新版本对客户的影响特别大,但是日常维护难免需要更新代码,因此热修复的技术,就比较迫切了。 经过一段时间的对比,我们最终决定使用阿里的Sophix方案&am…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...

基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...

【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...