参数量与计算量

例:输入是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

原文地址:https://www.cnblogs.com/gezhuangzhuang/p/10922568.html