CNN中的参数,计算量,FLOPs,Multi-Add(乘加),输出特征图尺寸和通道变化

在阅读论文时,我们会遇到参数量,FLOPS,Multi-add, CNN参数,CNN计算量等概念,通过阅读整理,这篇博客希望以最简洁的解释帮助大家理解这些基本概念。
首先,我们看一下卷积的计算方式:
在这里插入图片描述
卷积的计算方式:图片来自http://cs231n.github.io/convolutional-networks/

卷积的计算方式

上图描述了一个 553 的输入特征图边界采用1个0像素填充,利用 2 个 33 的卷积核,其步长为2进行计算的例子:最后的输出特征图是 33*2。

这个是怎么得到的呢,我先假定一些卷积相关的基本采参数:

输入特征图高:Hi,宽:wi

输入特征图的边界填充像素个数: p

卷积核尺寸(高x宽):Kh*Kw

卷积核滑动步长:s

输出特征图高:Ho,宽:Wo

则:Ho = [(Hi - Kh + 2p) / s] + 1 ,Wo = [(wi - Kw + 2p) / s] + 1

注:这里的 [x] 表示向下取整:e.g. [5 / 2] = 2

所以上图中:Ho = [5 - 3 + 21] / 2 + 1 = 3 ;Wo = [5 - 3 + 2p] / 2 + 1 = 3

由于采用了2个33的卷积核,所以输出两个特征图,其大小都为33

顺便提一句:如果我们采用的空洞卷积,则会有一个参数 d 表示膨胀率:(这里不具体解释空洞卷积的概念)

那么:Ho = [(Hi + 2p -d(Kh - 1) - 1) / s] + 1;Wo = [(Wi + 2p - d(Kw - 1) - 1) / s] + 1

当 d = 1时,表示的普通卷积,退化为前面的公式;所以大家可以直接记这个公式。

下面我们分析CNN的参数和CNN的计算量

对于一个 HiWiCi 的输入特征图经过KwKh的卷积操作并输出 HoWo*Co 的特征图有两种算数操作(即,Multi-Add)

1,乘法操作

对于Kh*Kw的卷积窗口,有 Kh*Kw*Ci 次乘法操作,因为卷积是在输入特征图上进行,而卷积是在 Ci 个通道上同时进行。

2,加法操作

对于 n 个元素求和,我们需要 n - 1次加法。而在一个卷积窗口内有 Kh * Kw * Ci 个元素。所以我们需要Kh*Kw*Ci - 1次加法操作。

卷积的参数可以理解为在一个卷积窗口内的计算个数,即输出一个卷积结果元素产生的运算操作。

CNN参数:(KhKwCi + KhKwCi - 1)* Co = (2KhKwCi - 1) Co (没有偏置bias的情况)

要知道,偏置项只有在输出特征图上才有效。

所以,如果输出才有偏置的话,那么CNN参数应该在每个输出通道上 加上一个偏置项。

CNN参数:(KhKwCi + KhKwCI - 1)* Co + Co = 2KhKw*Co

CNN的计算量就是对所有输出特征图的所有元素的求和。

CNN的计算量 = CNN参数 * Ho * Wo

CNN的计算量: (2KhKwCi - 1) Co * Ho*Wo (无偏置bias的情况)

CNN的计算量: 2KhKwCi * Co * HoWo (有偏置bias的情况)

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

FLOPs:注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。

这里FLOPs就等于CNN的计算量。

FLOPs = (2KhKwCi - 1) Co * Ho*Wo (无偏置bias的情况)

FLOPs = 2KhKwCi * Co * HoWo (有偏置bias的情况)

通道变化:
1:输入通道个数 等于 卷积核通道个数
2:卷积核个数 等于 输出通道个数

参考:
【1】http://cs231n.github.io/convolutional-networks/
【2】https://www.zhihu.com/question/65305385
【3】https://blog.csdn.net/weixin_40671425/article/details/98057135

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DeepLearning in Pytorch|共享单车预测NN详解(思路+代码剖析)

目录 概要 一、代码概览 二、详解 基本逻辑 1.数据准备 2.设计神经网络 初版 改进版 测试 总结 概要 原文链接:DeepLearning in Pytorch|我的第一个NN-共享单车预测 我的第一个深度学习神经网络模型---利用Pytorch设计人工神经网络对某地区租赁单车的使用…

LeetCode中的returnSize和returnColumnSize

今天这篇比较水,不过本文要讲的内容是我曾经遇到过的问题,也可能是大部分人在初次接触力扣时的一些疑问。当时遇到这个问题也是上网找了许久没有找到满意的答案,现在自己明白了,也希望能够帮助还抱有疑惑的各位解答。 如果我说的…

减少PDF文件大小的方法,亲测巨好用!!!

周六晚上,导师突然发了两个pdf,让把大小改成1M以下!!! 试了很多方法最后,发现了个最好使用的,不过需要下载下Adobe Acrobat文件编辑软件,下载地址如下 链接:https://pan.…

回溯算法08-组合总数II(Java/组合去重的两种方法)

8.组合总数II 题目描述 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 **注意:**解集不能包含重复的组合。 示例 1: 输…

STM32标准库——(21)Flash闪存

1.简介 第一个用途,对于我们这个C8T6芯片来说,它的程序存储器容量是64K,一般我们写个简单的程序,可能就只占前面的很小一部分空间,剩下的大片空余空间我们就可以加以利用,比如存储一些我们自定义的数据&…

作业 字符数组-统计和加密

字串中数字个数 描述 输入一行字符&#xff0c;统计出其中数字字符的个数。 输入 一行字符串&#xff0c;总长度不超过255。 输出 输出为1行&#xff0c;输出字符串里面数字字符的个数。 样例 #include <iostream> #include<string.h> using namespace std; int m…

Solidity攻击合约:重入攻击与危害分析

以太坊智能合约开发中&#xff0c;重入攻击是一种常见的安全漏洞。这种攻击通常发生在合约的递归调用中&#xff0c;攻击者通过构造恶意交易&#xff0c;使得原本合约在执行过程中不断调用自身或其他合约&#xff0c;从而耗尽合约的Gas&#xff08;交易费用&#xff09;&#x…

qsort函数的用法及参数的讲解

第一种用法展示&#xff1a;&#xff08;整形数组的qsort&#xff09; 一&#xff0c;qsort函数的定义&#xff1a; qsort 函数的定义&#xff1a;void qsort (void* base, size_t num, size_t size, int (*compar)(const void*,const void*)); 使用其需要包含头文件&#x…

Apps分类:深度解析多维度标准与应用领域

引言 随着智能手机的广泛普及&#xff0c;移动应用已经成为我们日常生活中不可或缺的一部分。这个数字化时代&#xff0c;我们依赖于各种各样的应用&#xff0c;从社交媒体到生产力工具&#xff0c;再到娱乐和健康应用&#xff0c;移动应用为我们提供了方便、娱乐和信息获取的…

波奇学Linux: 信号捕捉

sigaction:修改信号对应的handler方法 act输入型参数&#xff0c;oldact输出型参数 void (*sa_handler) (int) //修改的自定义函数 sigset_t sa_mask // void handler(int signo) {cout<<"catch a signal, signal number: "<<signo<<endl; } int …

函数柯里化:JavaScript中的高级技巧

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

CraxsRat7.4 安卓手机远程管理软件

CRAXSRAT 7.4 最新视频 https://v.douyin.com/iFjrw2aD/ 官方网站下载 http://craxsrat.cn/ 不要问我是谁&#xff0c;我是活雷锋。 http://craxsrat.cn/ CraxsRat CraxsRat7 CraxsRat7.1 CraxsRat7.2 CraxsRat7.3 CraxsRat7.4