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,计算卷积运算量与参数量?
运算量计算
参数量计算:太懒了,不算了。
同时也可用以下方式表示,按照不同定义计算即可。
参考知乎@弘宇、@留德华叫兽 。学习笔记,如有侵权,随时联系删除。
成文仓促,难免疏漏
以上,欢迎指正,