CNN-pooling层的实现

Pooling层概述

Pooling层是CNN中的重要组成部分,通常用来实现对网络中Feature Map的降维,减少参数数量的同时,为网络后面各个层增加感受野,保留Feature Map的显著特征。Pooling层根据计算方式不同,划分为最大池化层(Max Pooling)、局部平均池化层(Local Mean Pooling)、全局平均池化层(Global Mean Pooling)

Pooling层的输出计算

Pooling层主要的作用是下采样,通过去掉Feature Map中不重要的样本,进一步减少参数数量。Pooling的方法很多,最常用的是Max PoolingMax Pooling实际上就是在n的样本中取最大值,作为采样后的样本值。下图是22 Max Pooling:

根据上图我们用表示上一层的加权输入;用l表示下一层的加权输入,即层经过Max Pooling计算的输出层。我们先来考察一个具体的例子,然后再总结一般性的规律。对于max pooling:

可总结

, ,k为Max Pooling的池化核大小

除了Max Pooing之外,常用的还有Mean Pooling——取各样本的平均值。

对于深度为D的Feature Map,各层独立做Pooling,因此Pooling后的深度仍然为D。

Pooling层的训练

无论max Pooling还是Mean Pooling,都没有需要学习的参数。因此,在卷积神经网络的训练中,Pooling层需要做的仅仅是将误差项传递到上一层,而没有参数梯度的计算(因为没有参数需要更新)。

我们用表示上一层的加权输入;用l表示下一层的加权输入,。通过上面那个的例子推导结果,可以看出,只有区块中最大的才会对的值产生影响。假如针对中的最大值为,则上式相当于:

现在,我们发现了规律:对于max pooling,下一层的误差项的值会原封不动的传递到上一层对应区块中的最大值所对应的神经元,而其他神经元的误差项的值都是0。如下图所示(假设、、、为所在区块中的最大输出值):

Mean Pooling误差项的传递

同理我们通过上面一个的例子,先来看看是如何影响的,假如针对

同样,我们很容易求得下面几个偏导数:

根据链式求导法则,我们可以进一步算出:

通过上面推导我们发现了规律:对于mean pooling,下一层的误差项的值会平均分配到上一层对应区块中的所有神经元。如下图所示:

作者:城市郊区的牧羊人

链接:https://www.jianshu.com/p/4060600f711e

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值