14.1. 衡量指标¶
通常用参数量(params)、乘累加量(Fused multiply–add, Madd)、浮点数运算量(FLOPs)以及内存读写量来衡量网络的运算复杂度. 有关FLOPS参见 Section-ComputationalComplexityPerformance 小节.
14.1.1. 运算量计算¶
卷积层¶
卷积层的 \(\text {FLOPs}\) 可由下式计算 [1]
(14.1)¶\[\text { FLOPs }=2 H W\left(C_{in} K^{2}+1\right) C_{out}
\]
其中, \(H, W\) 分别为输入特征图的高和宽, \(C_{in}, C_{out}\) 分别为输入特征图和输出特征图的通道数, \(K\) 为卷积和的大小.
由式 式.2.12 和 式.2.13 知, 单个卷积核与单个输入卷积需要执行 \(H_k W_k H_0 W_0\) 乘法, \((H_k W_k-1) H_0 W_0\) 加法, \(C_i\) 个卷积核相加需要执行 \(H_oW_o(C_i-1)\), 对于每个卷积输出加上偏置, 还需要执行 \(H_oW_o\) 次加法, 那么单个输入单个卷积层的总运算量为
(14.2)¶\[\begin{aligned}
\text { FLOPs } &= \left[H_{k} W_{k} H_{o} W_{o} C_{i}+\left(H_{k} W_{k}-1\right) H_{o} W_{o} C_{i}+H_{o} W_{o}\left(C_{i}-1\right)+H_{o} W_{o}\right] C_{o}\\
&= 2 H_{k} W_{k} H_{o} W_{o} C_{i} C_{o}.
\end{aligned}
\]