一些neural net里有所谓的pooling layer,请问这里的pooling是什么意思?
谢谢!
6个回答
pooling中文叫做池化,常用的pooling方法有最大值法和均值法。
pooling的作用就是对图片中的每个小块(而不是每个点)提取信息。
比如有个4 x 4的矩阵,
如果我们用2 x 2的max pooling,也就是对上面原矩阵中2 x 2的小分块矩阵求最大值,就可以得到如下结果。
如果我们用2 x 2的average pooling,也就是对上面原矩阵中2 x 2的小分块矩阵求均值,就可以得到如下结果。
池化实际上是使图片变小来突出特征,节省运算量。
比如2X2池化是把相邻4个点变成一个点,怎么处理呢?
上面说的比较清楚了,一般取最大值,或者平均值。
CNN就是为了图像处理设置的,图像中我们进行池化并不会对图像造成很大损失。
SofaSofa数据科学社区DS面试题库 DS面经pooling是池化的意思,一般在神经网络中有常见的两种池化方式
池化层
在通过卷积层获得输入的特征时,我们需要做的利用这么特征继续做分类运算。但是针对多个卷积核下的输出特征,依旧会面临着超庞大的参数运算,为了解决这个问题,我们依旧需要减少参数量。在使用卷积层时,是因为卷积运算可以有效的从输入中提取特征,我们可以对特征做再统计。这一再统计既要能够反映原输入的特征,又要能够降低数据量,我们很自然的想到了取平均值、最大值。这也是池化操作。
池化层原理
从CNN的总体结构上来看,在卷积层之间往往会加入一个池化层(pooling layer).池化层可以非常有效地缩小图片的尺寸。从而减少最后全连接层的参数,在加快计算速度的同时也防止了过拟合的产生。
池化层前向传播过程类似于卷积层的操作一样,也是通过移动一个类似滤波器的结构完成的,不同于卷积层的是,池化层的滤波器计算不是加权求和,而且求区域内的极大值或者平均值。
一 使用最多的是最大值操作的池化层,又称最大池化层(max pooling),计算图像区域内最大值,提取纹理效果较好.
二 使用平均值操作的池化层,又称平均池化层(mean pooling),计算图像区域的平均值,保留背景更好
以图片的二维pooling为例,它是用于降低二维向量的维度。常用的pooling方法有max pooling, average pooling等。以2乘2的max pooling为例,它就是仅仅保留每个2乘2的窗口中数值最大的那个元素。
SofaSofa数据科学社区DS面试题库 DS面经max pooling可以看做是2x2的非线性filtering(取max)再1/2下采样(down sample),用于提取一个2x2块的信息。最主要目的是
1.在空间上减小数据量,减少计算量
2加入空间平移不变性,减少过拟合。平移小于1个像素,不影响结果。
pooling只能用在Image/Region classification这类以区域为单位的任务。对于以像素为单位的任务(regression / restoration/ deconvolution)最好不用pool,因为在空间上的信息被压缩(down sample)后很难恢复,或者是能靠训练数据得到先验知识中去猜。
SofaSofa数据科学社区DS面试题库 DS面经