参数量与计算量
例:输入是m*m*c的图像,卷积核大小是k*k,其输出是n*n*d,也表示卷积核的数量是d,其总参数是多少,总的乘法计算量是多少?
总参数:c*k*k*d
总乘法计算量:c*k*k*n*n*d
解释如下:
对于输出feature-map上某一个channel的点,经过如下两步得到:
1. 卷积核k*k与输入的每个channel卷积,把每个channel上的内容加起来,就得到最后一个点。如下图1所示,那么输出feature-map上每个点的计算量为c*k*k
2. 那么输出feature-map上有n*n*d个点,所以总乘法计算量:c*k*k*n*n*d
图1 卷积
一般地,我们可以将5*5拆成两个3*3,那么我们可以来比较一下这两者的计算量和参数量
假设输入图像大小是5*5*1,最终都需要变成1*1*1
那么对于5*5的核,我们的总参数量为:1*5*5*1=25,总的乘法计算量为1*5*5*1=25
对于3*3的核:
1. 5*5*1 --> 3*3*1,参数:1*3*3*1=9,计算量为:1*3*3*3*3*1=81
2. 3*3*1 --> 1*1*1,参数:1*3*3*1=9,计算量为:1*3*3*1=9
总的参数:18,总的计算量为:90
核大小 | 参数数目 | 计算量 |
---|---|---|
5*5的核 | 25 | 25 |
3*3的核 | 18 | 90 |
但是,计算机读内存的速度比乘法的速度慢多了,所以我们宁愿多算几次,也不要多度一点内存数据
参考:
轻量化模型:SqueezeNet,MobileNet,ShuffleNet以及Xception