CNN前向传播算法

输入:1个图片样本,CNN模型的层数L和所有隐藏层的类型,对于卷积层,要定义卷积核的大小K,卷积核子矩阵的维度F,填充大小P,步幅S。对于池化层,要定义池化区域大小k和池化标准(MAX或Average),对于全连接层,要定义全连接层的激活函数(输出层除外)和各层的神经元个数。

输出:CNN模型的输出 a L a^L aL
    1) 根据输入层的填充大小P,填充原始图片的边缘,得到输入张量 a 1 a^1 a1

2)初始化所有隐藏层的参数 W , b W,b W,b

3)for l = 2 l=2 l=2 to L − 1 L−1 L1:

a) 如果第 l l l层是卷积层,则输出为
a l = R e L U ( z l ) = R e L U ( a l − 1 ∗ W l + b l ) a^l= ReLU(z^l) = ReLU(a^{l-1}*W^l +b^l) al=ReLU(zl)=ReLU(al1Wl+bl)

b) 如果第 l l l层是池化层,则输出为 a l = R e L U ( z l ) = R e L U ( a l − 1 ∗ W l + b l ) a^l= ReLU(z^l) = ReLU(a^{l-1}*W^l +b^l) al=ReLU(zl)=ReLU(al1Wl+bl), 这里的pool指按照池化区域大小k和池化标准将输入张量缩小的过程。

c) 如果第 l l l层是全连接层,则输出为
a l = σ ( z l ) = σ ( W l a l − 1 + b l ) a^l= \sigma(z^l) = \sigma(W^la^{l-1} +b^l) al=σ(zl)=σ(Wlal1+bl)
    4)对于输出层第L层:
a L = s o f t m a x ( z L ) = s o f t m a x ( W L a L − 1 + b L ) a^L= softmax(z^L) = softmax(W^La^{L-1} +b^L) aL=softmax(zL)=softmax(WLaL1+bL)

你可能感兴趣的:(CNN前向传播算法)