Python 为什么卷积网络的训练比完全连接的网络慢得多

Python 为什么卷积网络的训练比完全连接的网络慢得多,python,math,keras,neural-network,conv-neural-network,Python,Math,Keras,Neural Network,Conv Neural Network,这是我建立的卷积神经网络: 相比之下,这里是一个只有密集层的常规ANN: 参数的数量相当相似。两者都用于对MNIST数据集(60.000个28x28数组)中的手写数字进行分类。独立于我的计算能力,CNN的训练速度要慢很多。 60.000张图像上250个时代的ANN:0:05小时 CNN在30000张图片上播放20个时代:12:00小时 所以问题是为什么?我的猜测是由于CNN的参数共享,参数的数量可能相似,但卷积层的一个参数被多次使用: 28x28图像上的3x3内核->每个参数使用约784次(

这是我建立的卷积神经网络:

相比之下,这里是一个只有密集层的常规ANN:

参数的数量相当相似。两者都用于对MNIST数据集(60.000个28x28数组)中的手写数字进行分类。独立于我的计算能力,CNN的训练速度要慢很多。 60.000张图像上250个时代的ANN:0:05小时 CNN在30000张图片上播放20个时代:12:00小时

所以问题是为什么?我的猜测是由于CNN的参数共享,参数的数量可能相似,但卷积层的一个参数被多次使用:

28x28图像上的3x3内核->每个参数使用约784次(相同的填充) 使用32个内核,这将产生28x28x32输出(在汇集14x14x32之后)。下一个卷积层的内核是3x3x32,所以这里每个参数将使用大约6.272次


对整个培训过程有更多了解的人能同意或不同意我的观点吗?或者你对这个话题还有其他想法吗

我认为CNN架构中的瓶颈是扁平化4层,因为它需要将输入矩阵重塑为下一层的向量。在ANN架构中,这种重塑不会发生,对吧?泄漏的relu和最大池也是额外的计算。