深度学习——Pooling Layer
简介
- Pooling Layer正常是用于Convolution Layer后面,可以进一步提取有效特征,降低 n W , n H n_W,n_H nW,nH维度,减少计算量。Pooling 层和Convolution层一样具有 s t r i d e ( d ) 、 f 、 p a d ( p ) stride(d)、f、pad(p) stride(d)、f、pad(p)参数。
- Pooling Layer主要有两种:1)Max Pooling、2)Average Pooling,如下图(1)
-
n
H
l
=
⌊
n
H
l
−
1
+
2
∗
p
−
f
s
+
1
⌋
,
n
W
l
=
⌊
n
W
l
−
1
+
2
∗
p
−
f
s
+
1
⌋
,
n
C
l
=
n
C
l
−
1
(
1
)
n_H^l=\lfloor \frac{n_H^{l-1}+2*p-f}{s}+1\rfloor,n_W^l=\lfloor \frac{n_W^{l-1}+2*p-f}{s}+1\rfloor,n_C^{l}=n_C^{l-1} \qquad(1)
nHl=⌊snHl−1+2∗p−f+1⌋,nWl=⌊snWl−1+2∗p−f+1⌋,nCl=nCl−1(1)
f i g u r e ( 1 ) figure(1) figure(1)
1、Max Pooling
forwardpropagation
- Max Pooling如上图(1)所示,对输入数据每一通道在f*f 的slice范围内的数取最大值形成新的矩阵,最后每一通的矩阵concat在一起,维度变为公式(1)。
f
=
2
,
s
t
r
i
d
e
=
2
f =2,stride =2
f=2,stride=2。
a ( n h , n w , c ) l = m a x ( a ( n h ∗ s t r i d e : n h ∗ s t r i d e + f , n w ∗ s t r i d e : n w ∗ s t r i d e + f , c ) l − 1 ) ( 2 ) a_{(nh,nw,c)}^l=max(a^{l-1}_{(nh*stride:nh*stride+f,nw*stride:nw*stride+f,c)})\qquad(2) a(nh,nw,c)l=max(a(nh∗stride:nh∗stride+f,nw∗stride:nw∗stride+f,c)l−1)(2)
backpropagation
- 由前向传播可以知道,梯度只要最大值才有,只有最大值才需更新。
m a s k = ( a ( n h ∗ s t r i d e : n h ∗ s t r i d e + f , n w ∗ s t r i d e : n w ∗ s t r i d e + f , c ) l − 1 = = m a x ) / / 等 于 最 大 值 的 位 置 变 为 1 , 其 他 为 0 ( 3 ) mask = (a^{l-1}_{(nh*stride:nh*stride+f,nw*stride:nw*stride+f,c)}==max)//等于最大值的位置变为1,其他为0 \qquad(3) mask=(a(nh∗stride:nh∗stride+f,nw∗stride:nw∗stride+f,c)l−1==max)//等于最大值的位置变为1,其他为0(3)
d A ( n h ∗ s t r i d e : n h ∗ s t r i d e + f , n w ∗ s t r i d e : n w ∗ s t r i d e + f , c ) l − 1 + = m a s k ∗ d A ( n w , n h , n c ) l ( 4 ) dA^{l-1}_{(nh*stride:nh*stride+f,nw*stride:nw*stride+f,c)} +=mask*dA^l_{(nw,nh,nc)}(4) dA(nh∗stride:nh∗stride+f,nw∗stride:nw∗stride+f,c)l−1+=mask∗dA(nw,nh,nc)l(4)
2、Average Pooling
forwardpropagation
- Average Pooling如上图(1)所示,对输入数据每一通道在f*f 的slice范围内的数计算平均值形成新的矩阵,最后每一通的矩阵concat在一起,维度变为公式(1)。
f
=
2
,
s
t
r
i
d
e
=
2
f =2,stride =2
f=2,stride=2。
a ( n h , n w , c ) l = n p . s u m ( a ( n h ∗ s t r i d e : n h ∗ s t r i d e + f , n w ∗ s t r i d e : n w ∗ s t r i d e + f , c ) l − 1 ) f ∗ f ( 5 ) a_{(nh,nw,c)}^l=\frac{np.sum(a^{l-1}_{(nh*stride:nh*stride+f,nw*stride:nw*stride+f,c)})}{f*f}\qquad(5) a(nh,nw,c)l=f∗fnp.sum(a(nh∗stride:nh∗stride+f,nw∗stride:nw∗stride+f,c)l−1)(5)
backpropagation
- 由前向传播可以知道
d A v e r a g e ( n h ∗ s t r i d e : n h ∗ s t r i d e + f , n w ∗ s t r i d e : n w ∗ s t r i d e + f , c ) l = n p . s u m ( d A v e r a g e ( n h ∗ s t r i d e : n h ∗ s t r i d e + f , n w ∗ s t r i d e : n w ∗ s t r i d e + f , c ) l − 1 ) f ∗ f dAverage^{l}_{(nh*stride:nh*stride+f,nw*stride:nw*stride+f,c)}=\frac{np.sum(dAverage^{l-1}_{(nh*stride:nh*stride+f,nw*stride:nw*stride+f,c)})}{f*f} dAverage(nh∗stride:nh∗stride+f,nw∗stride:nw∗stride+f,c)l=f∗fnp.sum(dAverage(nh∗stride:nh∗stride+f,nw∗stride:nw∗stride+f,c)l−1)
d A ( ( n h ∗ s t r i d e : n h ∗ s t r i d e + f , n w ∗ s t r i d e : n w ∗ s t r i d e + f , c ) l − 1 + = d A v e r a g e ( n h ∗ s t r i d e : n h ∗ s t r i d e + f , n w ∗ s t r i d e : n w ∗ s t r i d e + f , c ) l ( 4 ) dA^{l-1}_{((nh*stride:nh*stride+f,nw*stride:nw*stride+f,c)} += dAverage^{l}_{(nh*stride:nh*stride+f,nw*stride:nw*stride+f,c)} (4) dA((nh∗stride:nh∗stride+f,nw∗stride:nw∗stride+f,c)l−1+=dAverage(nh∗stride:nh∗stride+f,nw∗stride:nw∗stride+f,c)l(4)