神经网络的参数量(Params)和计算量(FLOPs)

定义

参数量(Params)

参数量是指模型训练中需要训练的参数总数。用来衡量模型的大小(计算空间复杂度)。

计算量(FLOPs)

浮点运算次数,理解为计算量(计算时间复杂度),可以用来衡量算法的复杂度,常用做神经网络模型速度的间接衡量标准(虽然最近已经有文章证明靠FLOPs间接标准评价模型的速度是不靠谱的,因为模型的计算速度还跟内存的吞吐等因素相关,但此标准依然广泛用作模型速度的参考评价标准)。在计算 FLOPS时,我们通常将加,减,乘,除,求幕,平方根等作为单个FLOP进行计数。

公式表示

卷积层


输入维度:神经网络的参数量(Params)和计算量(FLOPs)
输出维度:神经网络的参数量(Params)和计算量(FLOPs)
卷积核:神经网络的参数量(Params)和计算量(FLOPs)

参数量: 神经网络的参数量(Params)和计算量(FLOPs)
参数量(包括偏置bias):神经网络的参数量(Params)和计算量(FLOPs)

计算量: 神经网络的参数量(Params)和计算量(FLOPs)
计算量(考虑加法和偏置): 神经网络的参数量(Params)和计算量(FLOPs)

PS: 其中 神经网络的参数量(Params)和计算量(FLOPs)表示乘法计算量, 神经网络的参数量(Params)和计算量(FLOPs)表示加法计算量,+1表示偏置

池化层和激活层

激活、池化层仅仅对原来的矩阵做了一个变换,不会引进新的参数,这些其他层类型肯定需要时间,但它们不使用点积,并且成为网络总计算复杂度的舍入误差。

全连接层

全连接层设置下一层神经元的个数,并使用仿射变换神经网络的参数量(Params)和计算量(FLOPs)得到下一层神经元的值,因为两层之间的神经元会全部连接起来,所及叫做全连接,如图所示。

参数量: 神经网络的参数量(Params)和计算量(FLOPs)
参数量(包括偏置bias): 神经网络的参数量(Params)和计算量(FLOPs)

计算量: 神经网络的参数量(Params)和计算量(FLOPs)
计算量(考虑加法和偏置): 神经网络的参数量(Params)和计算量(FLOPs)
PS: 神经网络的参数量(Params)和计算量(FLOPs)表示加法运算量(权重矩阵与输入/上一层值的矩阵向量相乘所需的加法运算),+1表示偏置,输入是多维的直接相乘即可。

BN层

BN层引入的参数和输入层神经元个数相关,假设输入神经元个数为n,则该层引进的参数为2n不过但部分情况下可以完全忽略Batch Normalization层的影响

总结: 对于神经网络模型,减少网络参数应主要针对全连接层;而进行计算量优化时,重点应放在卷积层。

补充: 在笔试时,有时不会给出输出特征图的大小,需要自己计算,特征图大小的计算如下:

卷积层:神经网络的参数量(Params)和计算量(FLOPs)

池化层:神经网络的参数量(Params)和计算量(FLOPs)

PS: 计算结果不是整数时,卷积层上取整,池化层下取整。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年4月15日 上午10:25
下一篇 2023年4月15日

相关推荐