参考:https://zhuanlan.zhihu.com/p/31575074
对于改善模型的复杂度也算是神经网络的一个创新点。
1、复杂度分析:模型本身的复杂度分析,计算平台上的理论计算性能。
2、时间复杂度:模型的运算次数,用FLOPs(浮点运算次数)衡量。
单个卷积层的参数量:
卷积核的宽和高相乘,乘以原始图像的深度,乘以卷积核的个数。
单个卷积层的时间复杂度:
卷积核的边长的平方*卷积核输出的特征图边长*输入通道数*输出通道数
输出特征图的尺寸:(输入特征图的尺寸-卷积核的大小+2padding)/s;
卷积神经网络整体的时间复杂度:
层内相乘,层间相加。
3、空间复杂度:总参数量+各层输出特征图(指输入单个样本,模型完成一次前向传播过程所发生的内存交换总量)
参数量:模型所带参数的层的所有权重参数总量。(模型体积),只计算权重
各层输出特征图:实时运算过程中,每层计算出的特征图的大小。
4、时间复杂度决定模型的训练和预测时间。
如果复杂度过高,会导致模型训练和预测耗费大量时间。
空间复杂度决定模型的参数数量。
由于维度灾难存在,所以模型的参数越多,训练所需要的数据量就越大,现实生活数据集通常不会很大,容易导致过拟合。
5、降低复杂度的方式:
添加1x1的卷积层;
利用2个3x3的卷积核代替一个5x5的卷积核;
利用GAP(全局平均池化)代替flatten(全连接)。