深度学习笔记四——CNN的前向传播算法

一、输入层到卷积层的前向传播过程

输入可以是任意维度的张量,过程的公式可表示成如下:

$a^2= \sigma(z^2) = \sigma(a^1*W^2 +b^2)$

其中,上标表示层数,星号表示卷积,b为偏倚,$\sigma$表示激活函数。

 

这里需要我们自定义的参数有:

1、卷积核,比如有k个,那么输入层的输出,或者说第二层卷积层的对应的输入就有k个。

2、卷积层中每个子矩阵的大小,F。

3、填充padding,我们卷积的时候为了更好的识别边缘,一般会在输入矩阵的周围加上若干个0,再进行卷积。加多少圈则padding为多少。

4、步幅stride。即卷积中每次移动的像素的大小。

 

二、隐藏层到卷积层的前向传播过程

假设隐藏层的输入是M个矩阵对应的三维张量,则M个子矩阵卷积后相应位置叠加的公式为:

$a^l= \sigma(z^l) = \sigma(\sum\limits_{k=1}^{M}z_k^l) = \sigma((\sum\limits_{k=1}^{M}(a_k^{l-1}*W_k^l) +b^l))$

这里需要定义的参数和上一节一样。

 

三、卷积层到池化层

池化层的作用是缩小输入矩阵,一般设池化区域为$k\times k$,则输出矩阵都是$\frac{N}{k} \times \frac{N}{k}$的,需要设定的参数即为池化层的大小k,池化的标准一般为Max或者Average。

 

四、隐藏层前向传播到全连接层

由于全连接层一般为传统的DNN模型,公式可表示为如下:

$a^l = \sigma(z^l) = \sigma(W^la^{l-1} + b^l)$

这里的激活函数一般为sigmoid或者tanh。

经过了若干全连接层,最后一层为输出层,输出层与普通全连接层的差别在于采用Softmax为激活函数。

这里要定义的参数为:

1、全连接层的激活函数

2、全连接层各层神经元的个数

 

posted @ 2017-12-18 21:09  yanganling  阅读(587)  评论(0编辑  收藏  举报