在机器视觉,图像处理领域,卷积神经网络取得了巨大的成功。本文将参考UFLDL和DEEPLEARNING.NET的教程,结合自己的理解,梳理一下卷积神经网络的构成以及其BP算法的求解。虽然利用theano可以方便的实现LeNet5,但是不利于学习和理解卷积神经网络,所以最后会自己动手用python实现一个简单的LeNet5,并尝试利用python的PyCUDA库进行加速。
首先看LeNet5的结构,如下图所示(来自Yann LeCun的论文)。
对于卷积层,其计算公式为
其中K表示由L层到L+1层要产生的feature的数量,表示“卷积核”,表示偏置,也就是bias,令卷积核的大小为5*5,总共就有6*(5*5+1)=156个参数,对于卷积层C1,每个像素都与前一层的5*5个像素和1个bias有连接,