问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

卷积参数量和计算量怎么计算?

创作时间:
作者:
@小白创作中心

卷积参数量和计算量怎么计算?

引用
CSDN
1.
https://blog.csdn.net/weixin_63866037/article/details/145022862

在深度学习领域,卷积操作是非常重要且常用的一种运算方式,了解其参数量和计算量的估计方法对于模型的设计、优化以及资源评估等方面都有着关键的意义。本文将详细探讨如何对卷积的参数量和计算量进行估计。

一、卷积操作的基本概念回顾

在卷积神经网络(Convolutional Neural Network,CNN)中,卷积层通过卷积核(也叫滤波器)在输入数据(比如图像等)上滑动进行计算,从而提取特征。假设我们有一个输入特征图(Input Feature Map)尺寸为 $H_{in} \times W_{in} \times C_{in}$,其中 $H_{in}$ 表示高度,$W_{in}$ 表示宽度,$C_{in}$ 表示通道数。同时有一个卷积核,其尺寸为 $k \times k \times C_{in}$(这里 $k$ 表示卷积核的边长,且卷积核通道数和输入特征图通道数一致才能进行对应位置的运算),输出的特征图(Output Feature Map)尺寸为 $H_{out} \times W_{out} \times C_{out}$,这里 $C_{out}$ 表示输出特征图的通道数,也就是卷积核的个数。

二、卷积参数量的估计

2.1 常规卷积

对于常规的二维卷积操作,一个卷积核的参数量计算如下:

卷积核的参数量 = 卷积核的尺寸($k \times k$)× 输入通道数($C_{in}$)× 输出通道数($C_{out}$)

用公式表示即为:

$$
\text{Params} = k \times k \times C_{in} \times C_{out}
$$

例如,我们有一个卷积核尺寸为 $3 \times 3$,输入通道数是 3,输出通道数是 16,那么这个卷积操作的参数量就是:

$$
3 \times 3 \times 3 \times 16 = 432
$$

2.2 深度可分离卷积(以深度卷积和逐点卷积为例)

  1. 深度卷积(Depthwise Convolution)

深度卷积是对每个输入通道分别用一个卷积核进行卷积操作,其卷积核尺寸为 $k \times k$,输入通道数为 $C_{in}$,输出通道数同样为 $C_{in}$(因为是分别对每个通道单独卷积)。参数量计算公式为:

$$
\text{Params}{depthwise} = k \times k \times C{in}
$$

比如,卷积核尺寸为 $3 \times 3$,输入通道数为 32,那么深度卷积的参数量就是:

$$
3 \times 3 \times 32 = 288
$$

  1. 逐点卷积(Pointwise Convolution)

逐点卷积是采用 $1 \times 1$ 的卷积核对深度卷积后的结果进行通道整合等操作,其输入通道数为 $C_{in}$(也就是深度卷积的输出通道数),输出通道数为 $C_{out}$。参数量计算公式为:

$$
\text{Params}{pointwise} = 1 \times 1 \times C{in} \times C_{out}
$$

例如,输入通道数 32,输出通道数 64,那么逐点卷积的参数量为:

$$
1 \times 1 \times 32 \times 64 = 2048
$$

整个深度可分离卷积的参数量就是深度卷积参数量和逐点卷积参数量之和。

三、卷积计算量的估计

3.1 常规卷积

常规卷积的计算量主要考虑乘法和加法操作的次数,在计算输出特征图的每个元素时,需要用卷积核在对应的输入特征图区域进行计算。对于输出特征图的一个元素,其计算量为卷积核尺寸($k \times k$)× 输入通道数($C_{in}$)次乘法以及相应的加法操作(一般乘法次数占主导,所以常以乘法次数来衡量计算量)。

而整个输出特征图有 $H_{out} \times W_{out} \times C_{out}$ 个元素,所以总的计算量计算公式为:

$$
\text{FLOPs} = H_{out} \times W_{out} \times C_{out} \times k \times k \times C_{in}
$$

这里的 FLOPs(Floating Point Operations)表示浮点运算次数,也就是计算量的一种衡量指标。

3.2 深度可分离卷积

  1. 深度卷积

对于深度卷积部分,计算输出特征图的每个元素时,计算量为卷积核尺寸($k \times k$)× 1(因为是对单个通道操作)次乘法,整个输出特征图有 $H_{out} \times W_{out} \times C_{in}$ 个元素,所以深度卷积的计算量计算公式为:

$$
\text{FLOPs}{depthwise} = H{out} \times W_{out} \times C_{in} \times k \times k
$$

  1. 逐点卷积

逐点卷积计算量的计算类似常规卷积,不过卷积核尺寸为 $1 \times 1$,其计算量计算公式为:

$$
\text{FLOPs}{pointwise} = H{out} \times W_{out} \times C_{out} \times 1 \times 1 \times C_{in}
$$

整个深度可分离卷积的计算量就是深度卷积计算量和逐点卷积计算量之和。

总之,准确估计卷积的参数量和计算量对于我们理解卷积神经网络的复杂度、合理选择网络结构以及在不同硬件平台上进行高效部署等都有着极为重要的作用,希望这篇文章能帮助大家更好地掌握相关的估计方法。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号