神经网络——最大池化层的使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了神经网络——最大池化层的使用相关的知识,希望对你有一定的参考价值。
参考技术A 实施池化的目的:(1) 降低信息冗余;(2) 提升模型的尺度不变性、旋转不变性;(3) 防止过拟合。池化层的常见操作包含以下几种:最大值池化,均值池化,随机池化,中值池化,组合池化等。
其中更为常用的池化方法是最大池化(max-pooling)和均值池化(mean-pooling)。
1 最大池化(max-pooling)即取局部接受域中值最大的点。
2 最大值池化的优点在于它能学习到图像的边缘和纹理结构。
3 根据相关理论,特征提取的误差主要来自两个方面:
(1)邻域大小受限造成的估计值方差增大;
(2)卷积层参数误差造成估计均值的偏移。
一般来说,mean-pooling能减小第一种误差,更多的保留图像的背景信息,max-pooling能减小第二种误差,更多的保留纹理信息。与mean-pooling近似,在局部意义上,则服从max-pooling的准则。
max-pooling卷积核的大小一般是2×2。 非常大的输入量可能需要4x4。 但是,选择较大的形状会显着降低信号的尺寸,并可能导致信息过度丢失。 通常,不重叠的池化窗口表现最好。
输出:
若将self.maxpool1 = MaxPool2d(kernel_size=3,ceil_mode=False)中ceil_mode=True,
则输出:
使用tensorboard --logdir=logs/P15_logs命令打开tensorboard
参考资料:
1. https://zhuanlan.zhihu.com/p/77040467
2. https://baike.baidu.com/item/%E6%9C%80%E5%A4%A7%E6%B1%A0%E5%8C%96/22692585?fr=aladdin
3. https://www.bilibili.com/video/BV1hE411t7RN?p=19
卷积神经网络的一些细节思考(卷积池化层的作用)
卷积神经网络由卷积核来提取特征,通过池化层对显著特征进行提取,经过多次的堆叠,得到比较高级的特征,最后可以用分类器来分类。这是CNN的一个大概流程,其具体实现的结构是丰富多样的,但总的思想是统一的。
CNN整个的计算过程,最重要的有两点:组合性和局部不变性(平移、旋转、尺度放缩)。
组合性:
每个卷积核可以看做某种特征的提取器。所谓组合性就是将卷积核提取的一些简单特征进行组合,得到更高级的特征。比如图像的人脸分类:
第一个卷积层,可能只是从原始图像像素中学习到一些边缘特征,第二个卷积层可以从这些边缘特征中探测到简单的形状特征,然后接下来的卷积层,就可以用这些简单的形状特征探测到更高级的特征。比如人脸的形状。
局部不变性:
所谓局部不变性,比如图像,就是图像经过简单的平移、旋转、尺度放缩,池化层在相同的位置依旧可以提取到相同的特征。是的,这是池化层完成的任务。那么怎么样理解不变性呢,为了方便理解,如下图示例(来源知乎):
(1)平移不变性:
假设有一个16x16的图片,里面有个数字1,我们需要识别出来,这个数字1可能写的偏左一点(图1),这个数字1可能偏右一点(图2),图1到图2相当于向右平移了一个单位,但是图1和图2经过max pooling之后它们都变成了相同的8x8特征矩阵,主要的特征我们捕获到了,同时又将问题的规模从16x16降到了8x8,而且具有平移不变性的特点。图中的a(或b)表示,在原始图片中的这些a(或b)位置,最终都会映射到相同的位置。
(2)旋转不变性:
下图表示汉字“一”的识别,第一张相对于x轴有倾斜角,第二张是平行于x轴,两张图片相当于做了旋转,经过多次max pooling后具有相同的特征。
(3)尺度不变性:
下图表示数字“0”的识别,第一张的“0”比较大,第二张的“0”进行了较小,相当于作了缩放,同样地,经过多次max pooling后具有相同的特征。
注:这三种操作只能保证小幅度的变换,如果变换幅度较大,池化层并不能保证这种局部不变性。
池化层:
maxpooling除了刚刚所讲的有局部不变性,还有可以提取显著特征的同时降低模型的参数,从而降低模型的过拟合。
因为只是提取了显著特征,而舍弃了不显著的信息,是的模型的参数减少了,从而一定程度上可以缓解过拟合的产生。
以上是关于神经网络——最大池化层的使用的主要内容,如果未能解决你的问题,请参考以下文章