深度学习笔记四——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、全连接层各层神经元的个数

浙公网安备 33010602011771号