前言
随着深度学习在工业领域的使用,也随着深度学习的进步,模型的复杂度对于衡量一个模型的好坏也至关重要,本文主要介绍一般情况下参数量(Params)与计算量(FLOPs)的计算。
一、参数量的计算
参数量主要用来形容模型的大小程度,类似于算法中的空间复杂度。
1.卷积层
计算公式如下:
params = Co×(Ci×Kw×Kh +1)
其中,Co代表输入的通道数,Ci代表输出的通道数,Kw×Kh为卷积核的大小,若卷积核有偏置项(Bias)则+1,没有则不加。若卷积核为方形则Kw=Kh=K。
2.池化层
深度学习中,参数量一般是指随着训练可以不断进行自我调节大小的参数的数量。而池化层主要是用来采样,例如:最大池化,取一个filter中的最大值。所以池化层可以不用算参数量。
3.全连接层
计算公式如下:
params = (I+1)×O
其中,I为输入向量的维度也可以称作输入特征图的大小,O为输出向量的维度
二、计算量的计算
计算量原本用于形容硬件的性能,而在深度学习中用来形容模型执行的长短,类似宇算法中的时间复杂度。
1.卷积层
计算公式如下:
FLOPs = [Ci×Kw×Kh+(Ci×Kw×Kh-1) +1]×W×H×Co
其中Ci×Kw×Kh为一次卷积的乘法预算的计算量,(Ci×Kw×Kh-1)为一次卷积加法运算的计算量,+1为偏置项,W与H为特征图(feture map)的长和宽。
可简化为:
FLOPs = 2×Ci×Kw×Kh×W×H×Co
计算机视觉中常把一次乘法和加法合在一起,所以可以去掉前面乘的2。