思路
预处理一般是均值和方差。
经过卷积之后的公式是w(x-mean)/std + b
最后可以得到一个卷积操作加上一个element wise 的加。
总结
与原始的特征图相比,
精度:1e-6级别的差距
速度: 现有的操作和原始的预处理加卷积操作相比,速度提升不明显甚至还要慢。囧。可能我的实验设置有问题。
改天再验证吧。
更新
将element wise的加与卷积的偏置合并。速度提升很明显,但是精度损失也很明显。
单次运行的比较:
merge before: 0.177603006363
merge after: 0.00530290603638
Max abs diff: 11.1346111298
MSE diff: 0.269170612097
20190115
上次更新设计算法有问题,pad没有处理好。vgg第一层卷积核是33,加了pad,即使合并算法有小bug,导致影响也很小。ResNet不同,第一层是77,pad=3,导致的影响比较大,我自己测试出来也是这样。最终的解决方案是如果pad比较大,那么只合并除方差,如果pad较小,那么均值方差都可以合并。pad=0时,可以接近无损的合并均值方差。
only合并方差,可以提速几毫秒。