卷积神经网络的参数量计算和浮点计算量分析
1. CNN参数
params(w) = co* (ci * kw * kh)
params(b) = co
所以总的参数量为 params = co* (ci * kw * kh + 1)
当使用了BatchNormalization时,不需要bias
2. CNN计算量
FLOPs (乘法) = co* H * W * (ci * kw * kh) 其中H, W代表输出特征的宽和高
FLOPs (加法(w)) = co* H * W * (ci * kw * kh - 1) 其中H, W代表输出特征的宽和高
FLOPs (加法(b)) = co* H * W * (1) 其中H, W代表输出特征的宽和高
所以总的计算量 FLOPs = co* H * W * (ci * kw * kh ) * 2
3. 全连接层参数
全连接即普通的矩阵运算
对于(b, m)的输入,如果要转化为(b, n)的输出
其kernel的维度为(m,n)bias的维度为(n,)
所以,params = (m + 1)* n
4. 全连接层计算量
每一个输出都需要经过m次乘法,(m-1)次加法 + 1次加法,共有n个输出
所以总的计算量 FLOPs = 2 * m * n
参考:
(13条消息) 卷积神经网络参数和浮点计算量的公式_acrith-CSDN博客
深度学习之(经典)卷积层计算量以及参数量总结 (考虑有无bias,乘加情况) - 琴影 - 博客园 (cnblogs.com)