美文网首页Python3机器学习工具癖想法
Python3机器学习实践:卷积神经网络篇三 池化

Python3机器学习实践:卷积神经网络篇三 池化

作者: AiFany | 来源:发表于2019-05-13 14:50 被阅读54次
    image.png

    池化(Pooing)操作的对象是单通道的数字矩阵,也就是对该矩阵某一个邻域内的数字集合进行采样。主要有3种形式:一般池化,重叠池化和金字塔池化。

    一、池化类型

    • 一般池化

    池化窗口的尺寸为n*n,一般情况下池化窗口都是正方形的。步长等于n。此时池化窗口之间是没有重叠的。对于超出数字矩阵范围的,只计算范围内的或者范围外的用0填充在计算。本文只介绍最大值池化,均值池化,随机池化。下面给出图示:

    • 最大值池化

    池化窗口范围内的最大值作为采样的输出值。

    image
    • 均值池化

    池化窗口范围内的平均值作为采样的输出值,也就是普通均值池化。或者将范围内的数字归一化,每个数字与该范围内的数字之和的比例作为该数字的权重,然后原始数字和对应权重的乘积的和作为最终的输出值,也就是加权平均。下图中的示例是前者。

    image
    • 随机池化

    池化窗口范围内的数字,采用轮盘赌的方式进行采样,就是值较大的数字成为采样输出值的概率较大。

    • 重叠池化

    池化窗口之间有重叠。也就是步长大于等于1小于n,计算和一般池化是一样的。

    • Spatial Pyramid Pooling 空间金字塔池化

    空间金字塔池化,简称SPP,又名空间金字塔匹配。BP神经网络(全连接神经网络)中要求的输入维度必须是一致的,卷积神经网络中的网络也包括全连接层。因此需要将尺寸大小不一样的图片(经过多层卷积池化后的结果),转换为同样的尺寸,作为全连接神经网络的输入。如果利用裁剪可能会丧失很多的边缘信息,而SPP可以很好的解决这个问题。

    空间金字塔池化就是首先把图片看成1块,对这1块进行最大值池化,得到1个值,分成4块,对这4块分别进行最大值池化,得到4个值;分成16块,对这16块分别进行最大值池化,得到16个值,以此类推。这样就可以保证对于不同尺寸的图片而言,最终得到的值的个数是一样的。因为是最大值池化,超出范围的用不用0填充不会影响结果。

    下面给出2个不同尺寸的图片,进行空间金字塔池化的结果。

    image

    二、池化作用

    1. 降低了图片尺寸,也就是增大了感受野。感受野就是数字矩阵中的一个数字所对应的原图中的区域大小。因为池化是在某个范围内选择一个数字,也就是让这个数字代表这个范围内的所有的像素得值。这样做虽然也丢失了一些图片信息,但是同时增加了鲁棒性。

    2. 增加平移不变性。图片中某个目标单纯的位置的移动,不应该影响识别结果。而池化捕捉的恰好是目标的特征,并不是目标所在的位置,因此增加了平移不变性。

    3. 提升训练速度。因为在保留特征信息的前提下,降低了图片的尺寸。

    三、池化对比

    • 原图
    image
    • 池化后
    image

    项目地址卷积神经网络CNN,扫描下方二维码或者微信公众号直接搜索”Python范儿“,关注微信公众号pythonfan, 获取更多实例和代码。

    pythonfan.jpg

    相关文章

      网友评论

        本文标题:Python3机器学习实践:卷积神经网络篇三 池化

        本文链接:https://www.haomeiwen.com/subject/nsnlaqtx.html