深度学习——卷积神经网络原理解析(Convolution layer)
简介
- 卷积主要应用于计算机视觉领域,经常用于特征的提取、目标检测、人脸检测与识别等任务。卷积是同于一系列加乘法运算完成,核心是卷积核(filter),还有一些参数:strid(s)、pad、weights。下面介绍卷积层的前向传播和反先传播过程。
前向传播(fowardpropagation)
- 前向传播比较容易理解,就是卷积核和对应输入数据的区域先进行点积运算,再把一个矩阵里面数据求和得到一个数。
- l l l:代表第 l l l层(conv layer)
- f ( l ) f^{(l)} f(l):卷积核的尺寸( filter size)
- p l p^{{l}} pl:pad的大小
- s ( l ) s^{(l)} s(l): stride的大小
- n c l n^{l}_{c} ncl: 卷积核个数
- 每个卷积&的尺寸 f = f l ∗ f l ∗ n c l − 1 f = f^{l}*f^{l}*n_c^{l-1} f=fl∗fl∗ncl−1
- 卷积完输出的尺寸: a l = n H l ∗ n W l ∗ n c l a^{l} = n_H^{l}*n_W^{l}*n_c^{l} al=nHl∗nWl∗ncl
- n H = ⌊ n H l − 1 + 2 p ( l ) − f l s l ⌋ + 1 , n W = ⌊ n W l − 1 + 2 p ( l ) − f l s l ⌋ + 1 n_H=\lfloor\frac{n_H^{l-1}+2p^{(l)}-f^{l}}{s^l}\rfloor+1,n_W=\lfloor\frac{n_W^{l-1}+2p^{(l)}-f^{l}}{s^l}\rfloor+1 nH=⌊slnHl−1+2p(l)−fl⌋+1,nW=⌊slnWl−1+2p(l)−fl⌋+1
- z ( n h , n w , c ) l = n p . s u m ( W c ∗ a s l i c e + b c ) z^l_{(nh,nw,c)}=np.sum(W_c*aslice+b_c) z(nh,nw,c)l=np.sum(Wc∗aslice+bc)
- 一个卷积层参数个数: numbers=
(
f
∗
f
∗
n
C
l
−
1
∗
+
1
)
∗
n
C
l
,
1
代
表
参
数
b
(f*f*n_C^{l-1}*+1)*n_C^{l},1代表参数b
(f∗f∗nCl−1∗+1)∗nCl,1代表参数b
比如输入数据data 维度 3 ∗ 3 ∗ 3 3*3*3 3∗3∗3,filter大小为3, n C l = 20 n_C^{l}=20 nCl=20,参数总个数为: ( 3 ∗ 3 ∗ 3 + 1 ) ∗ 20 = 560 (3*3*3+1)*20=560 (3∗3∗3+1)∗20=560
反向传播(backpropagation)
d
A
l
−
1
+
=
∑
c
=
1
n
C
∑
i
=
1
n
H
∑
j
=
1
n
W
W
c
l
∗
d
Z
(
i
,
j
,
c
)
l
(
1
)
dA^{l-1} += \sum_{c=1}^{n_C}\sum_{i=1}^{n_H}\sum_{j=1}^{n_W}W_c^l*dZ^l_{(i,j,c)} \qquad(1)
dAl−1+=c=1∑nCi=1∑nHj=1∑nWWcl∗dZ(i,j,c)l(1)
d
W
c
l
=
∑
i
=
1
n
H
∑
j
=
1
n
W
a
l
−
1
∗
d
Z
(
i
,
j
)
l
(
2
)
dW_c^l =\sum_{i=1}^{n_H}\sum_{j=1}^{n_W}a^{l-1}*dZ_{(i,j)}^l \qquad(2)
dWcl=i=1∑nHj=1∑nWal−1∗dZ(i,j)l(2)
d
b
l
=
∑
i
=
1
n
H
∑
j
=
1
n
W
d
Z
(
i
,
j
)
l
(
3
)
db^l = \sum_{i=1}^{n_H}\sum_{j=1}^{n_W}dZ_{(i,j)} ^l\qquad(3)
dbl=i=1∑nHj=1∑nWdZ(i,j)l(3)