CNN卷积神经网络的前向传播
CNN的前向传播
1. 输入层到卷积层的前向传播
假设输入的是RGB的彩色图像,因此输入X是3个矩阵,分别对应了R,G,B的矩阵。
因为输入层是三个维度,因此卷积层一个filter的维度也是3.
a表示当前层的输出,上标表示层数。σ表示**函数,一般是Relu, *表示卷积操作,W表示卷积核
可以发现,CNN和标准的BPNN的前向传播很相似,只是,CNN不只是矩阵的乘积,还有张量的卷积。
CNN模型的参数:
1.卷积核的个数,以及kernel的大小
2.填充padding:在输入的矩阵周围加上N圈0,在进行卷积,因此padding=N
3.步幅stride:卷积过程中,每次移动的像素距离。
2. 隐含层到卷积层的前向传播
隐含层就是指除了输入层和输出层的中间层。
并没有多大的区别,只是卷积层的输入不再是原始的图片,而是经过卷积获得的特征图feature map.
此时输入到卷积层的维度不一定是3(RGB)和1(灰度图)。而是用户的设定的上一层filter的个数。
3. 隐含层到池化层的前向传播
比如输入的若干矩阵是NxN的,而我们的池化大小是kxk的区域,则输出的矩阵都是的。
池化层的参数:
1. 池化的区域大小k,如k=2或3
2. 池化的方式,Max或者Average
4. 隐含层到全连接层的前向传播
特征图需要经过Flatten压扁之后,才能和全连接成相连,此时的前向传播与一般BP神经网络的一样。
Flatten层会把512个7x7的特征图,变形成一维向量。