mr_hua

mrhua

Pool层及其公式推导

在CNN网络中卷积池之后会跟上一个池化层,池化层的作用是提取局部均值与最大值,根据计算出来的值不一样就分为均值池化层与最大值池化层,一般常见的多为最大值池化层

al1=σ(zl1)

前向传播

maxpool

前向传播会记录每次pool的核移动stride后所在区域里的最大值,和最大值所在坐标
这里以pool的核的大小为3x3,stride=1为例,则pool后的值的输出和最大值所在坐标如下图:
设pool层输出为al

aijl=max(amnl1),im,ni+2m,naijl1pool,a00

这里写图片描述

avg pool

这里pool核的大小为3x3,stride=1
这里写图片描述

反向传播

maxpool

由于pool层没有参数,所以没必要求梯度,主要将相关的梯度传下即可:

δk,vl1=Czk,vl1=iji=3,j=3Caijlaijlak,vl1ak,vl1zk,vl1

而由于

aijl=max(amnl1)=aimax,jmaxl1,imax,jmaxaijlpool

所以:

δk,vl1=iji=3,j=3{[(k=imax,v=jmax)?(Caijlaijlzimax,jmaxl1):0]ak,vl1zk,vl1}=iji=3,j=3{(k=imax,v=jmax)?Caijl:0]σ(zk,vl1)}

为方便书写,这里直接用了三目运算符了:D

为了统一敏感度图公式,如果设ai,jl=zi,jl=aimax,jmaxl
那么池化层的敏感度图δl=Czl=Cal
设一直pool层敏感度图如下:
这里写图片描述

那么pool上一层敏感度图为:
这里写图片描述
其中:

p10=(δ00+δ01+δ10+δ20+δ21)σ(z10l1)p02=δ02+δ03σ(z02l1)p22=δ11+δ12+δ13+δ22+δ23+δ31+δ32+δ33σ(z22l1)p30=δ30σ(z30l1)

avg pool

同样设
ai,jl=zi,jl=aimax,jmaxl
敏感度图:δl=Czl=Cal

设当前pool层敏感度图为:
这里写图片描述

所以上一层的敏感度图:

δk,vl1=iji=2,j=2Caijlaijlak,vl1ak,vl1zk,vl1

即:
δ00l1=19δ00lσ(z00l1)δ01l1=19δ00lσ(z01l1)+19δ01σ(z01l1)...δ33l1=19δ33lσ(z33l1)

自己推到过,才发现网上所述略有误差

阅读更多
个人分类: 深度学习
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭