提交 b91da362 编写于 作者: J JiabinYang

refine add pool api guide

上级 ed38001e
#####
池化
#####
减小输出大小和降低ddddd过拟合。降低过拟合是减小输出大小的结果,它同样也减少了后续层中的参数的数量。
池化通常只需要将前一层的特征图作为输入,在paddlepaddle中我们同样接受这样的通过设定池化的大小,方式,步长,是否是全局池化,是否使用cudnn,是否使用ceil函数计算输出来选择池化的方式。
paddlepaddle中有针对定长图像特征的二维(pool2d)、三维卷积(pool3d),ROI池化(roi_pool),以及针对序列的序列池化(sequence_pool)同时也有池化计算的逆向过程,下面先介绍Fluid里的2D/3D池化,以及roi池化,再来介绍序列池化
--------------
1. ``pool2d``/``pool3d``
------------------------
- ``input`` :
池化操作接收任何符合layout是:\ ``N(batch size)* C(channel size) * H(height) * W(width)``\ 格式的\ ``Tensor``\ 类型作为输入
- ``pool_size`` :
``pool_size``\ 用来确定池化\ ``filer``\ 的大小,即将多大范围内的数据池化为一个
- ``num_channels`` :
``pool_size``\ 用来确定输入的\ ``channel``\ 数量,如果未设置参数或设置为\ ``None``\ ,其实际值将自动设置为输入的\ ``channel``\ 数量
- ``pooling_type`` :
接收\ ``avg``\ 和\ ``max``\ 2种类型之一作为pooling的方式,默认值为\ ``max``\ ,其中\ ``max``\ 意为最大池化,即计算池化\ ``filter``\ 区域内的数据的最大值作为输出,而\ ``avg``\ 意为平均池化,即计算池化\ ``filter``\ 区域内的数据的平均值作为输出
- ``pool_stride`` :
``pool_stride``\ 意为池化的\ ``filter``\ 在输入特征图上移动的步长
- ``pool_padding`` :
``pool_padding``\ 用来确定池化中\ ``padding``\ 的大小,\ ``padding``\ 的使用是为了对于特征图边缘的特征进行池化,选择不同的\ ``pool_padding``\ 大小确定了在特征图边缘增加多大区域的补零从而决定边缘特征被池化的程度。
- ``global_pooling`` :
``global_pooling``\ 意为确定是否使用全局池化,全局池化是指使用和特征图大小相同的\ ``filter``\ 来进行池化,同样这个过程也可以使用平均池化或者最大池化来做为池化的方式,全局池化通常会用来替换全链接层以大量介绍参数防止过拟合
- ``use_cudnn`` :
``use_cudnn``\ 选项可以来选择是否使用cudnn来优化计算池化结果
- ``ceil_mode`` :
``ceil_mode``\ 是否使用ceil函数计算输出高度和宽度。\ ``ceil mode``\ 意为天花板模式,是指会把特征图中不足\ ``filter size``\ 的边给保留下来,单独另算,或者也可以理解为在原来的数据上补充了值为-NAN的边。而floor模式则是直接把不足\ ``filter size``\ 的边给舍弃了。
- api汇总:
- :ref:`api_fluid_layers_sequence_conv`
2. ``roi_pool``
------------------
``roi_pool``\ 是一个在\ ``Fast R-CNN``\ 中使用,用来从最后一个feature
map中提取ROI的特征图。
- ``rois`` :
接收\ ``LoDTensor``\ 类型来表示需要池化的 Regions of Interest,关于ROI的解释请参考\ `论文 <https://arxiv.org/abs/1506.01497>`__
- ``pooled_height`` 和 ``pooled_width``:
这里可以接受非正方的池化窗口大小
- ``spatial_scale``
``spatial_scale``\ 用作设定缩放ROI和原图缩放的比例,注意,这里的设定需要用户自行计算ROI和原图的实际缩放比例。
3. ``sequence_pool``
--------------------
``sequence_pool``\ 是一个用作对于不等长序列进行池化的接口,它将每一个实例的全部time-step的特征进行池化,他同样支持
``average``, ``sum``, ``sqrt`` 和
``max``\ 4种类型之一作为pooling的方式。 其中
- ``average``
是对于每一个time-step内的数据求和后分别取平均值做为池化的结果
- ``sum`` 则是对每一个time-step内的数据分别求和作为池化的结果
- ``sqrt``
则是对每一个time-step内的数据分别求和再分别取平方根作为池化的结果
- ``max`` 则是对每一个time-step内的数据分别求去最大值作为池化的结果
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册