拿一个简单的三层BP神经网络来说好了,假设每层神经元数量分别为n1,n2,n3。
拿一个样本(n1 * 1)进行前馈计算,那么就要进行两次矩阵运算,两次矩阵乘法(实际上是向量和矩阵相乘)分别要进行n1 * n2 和 n2 * n3次计算,
由于输入层和最终输出层结点数量(n1和n3)是确定的,所以可以视为常量,中间的隐藏层n2可以由自己设定。
所以对一个样本的前馈计算时间复杂度应该是O(n1 * n2 + n2 * n3) = O(n2)。
反向传播时时间复杂度和前馈计算相同,假设总共有m个训练样本,每个样本只训练一次,那么训练一个神经网络的时间复杂度应该是O(m*n2)。
同样的,如果是对一个样本进行预测,那么时间复杂度应该是O(n2)。