现有卷积层输出[B,W,H,C]
结论
与传统BN比较
在train阶段,若不采用采样和L1norm,量化BN只占传统BN计算复杂度的35.7%,减少了64.3%
若采用了采样和L1norm,量化BN占传统BN的15%,减少了85%。
在test阶段,量化BN没有任何计算量,比传统BN绝对减少了2∗32∗B∗W∗H∗C2*32*B*W*H*C2∗32∗B∗W∗H∗C。
与BNN bn比较
在train阶段,若不采用采用和L1norm,量化BN占BNN bn计算复杂度的61%,减少了40%
若采用了采样和L1norm,量化BN占BNN bn计算复杂度的26%左右,减少了74%。
在test阶段,量化bn比BNN BN减少了2∗32∗B∗W∗H∗C2*32*B*W*H*C2∗32∗B∗W∗H∗C
与WAGE bn比较
在train阶段,若不采用采样和L1norm,量化bn是WAGE bn的2.5倍。
若采用了采样和L1norm,量化bn与WAGEbn 基本一致。
在test阶段, 量化bn比wage BN减少了32∗B∗W∗H∗C32*B*W*H*C32∗B∗W∗H∗C
传统BN
训练阶段
在训练前向传播阶段,通过传统的BN层计算公式如下:
y=γx−μσB2+ϵ+β y = \gamma \frac {x-\mu}{\sqrt {\sigma_B^2+\epsilon}}+\betay=γσB2+ϵx−μ+β
σB2=∑(xi−μ)2n\sigma_B^2=\frac {\sum(x_i-\mu)^2}{n}σB2=n∑(xi−μ)2
现逐个分析各个参量所应用的bit数。
对x来说,作为卷积层的输出,其所需bit数KxK_xKx与上层的Activation bit数KaK_aKa,卷积层参数W的bit数KwK_wKw,参与运算数目n相关。以resnet 第一个卷积层为例,卷积核大小7*7,上层通道数为3. 假设KwK_wKw<=8, 则A * W所需bit数Kaw>=KwK_{aw}>=K_wKaw>=Kw。7 * 7 * 3 个KawK_{aw}Kaw所需bit数为Kconv>=Kaw+7K_{conv}>=K_{aw}+7Kconv>=