卷积神经网络的复杂度分析

在进行CNN的设计中,我们不仅要考虑模型的准确率,还需要考虑模型的实用性。现阶段大量的paper纯堆精度,缺没有深入思考模型以及算法的实用性。

最近有一点感触很深:很多我们在做研究时认为默认的东西,在进行实际应用项目中,才发现这些先验数据是无法获得的,这和学术探索是很不同的。可能需要问自己,我们应该做怎样的研究者?

 

对于CNN,网络的复杂度分析也是非常非常重要的。

1、时间复杂度——计算量。

就是我们常说的FLOPs,计算如下所示:

卷积神经网络的复杂度分析

2、空间复杂度

空间复杂度主要包括两部分,总参数量 + 各层输出特征图

卷积神经网络的复杂度分析

3. 复杂度对模型的影响

  • 时间复杂度决定了模型的训练/预测时间。如果复杂度过高,则会导致模型训练和预测耗费大量时间,既无法快速的验证想法和改善模型,也无法做到快速的预测。
  • 空间复杂度决定了模型的参数数量。由于维度诅咒的限制,模型的参数越多,训练模型所需的数据量就越大,而现实生活中的数据集通常不会太大,这会导致模型的训练更容易过拟合。
  • 当我们需要裁剪模型时,由于卷积核的空间尺寸通常已经很小(3x3),而网络的深度又与模型的表征能力紧密相关,不宜过多削减,因此模型裁剪通常最先下手的地方就是通道数。

 

参考自 https://zhuanlan.zhihu.com/p/31575074