池化层与卷积层中使用填充

我的理解是,我们在进行卷积时使用填充,因为卷积操作会通过缩小输出尺寸来减少其维度,同时也会丢失输入矩阵边缘/角落的信息。然而,在多个卷积层之后,我们又使用池化层来对特征图进行下采样。这不是有些矛盾吗?我们使用填充是因为我们不想减少空间维度,但随后又使用池化来减少空间维度。能否有人提供这两种方法背后的直觉?


回答:

假设我们处理的是图像作为输入,填充的原因不仅是为了防止维度缩小,还为了确保输入图像的角落和边缘像素在影响输出时不会处于“劣势”。如果没有填充,图像角落的像素只与一个滤波器区域重叠,而图像中间的像素则与多个滤波器区域重叠。因此,中间的像素会影响下一层的更多单元,从而对输出有更大的影响。其次,你确实希望缩小输入的维度(记住,深度学习的核心是压缩,即寻找输入的低维表示,以分离数据中的变化因素)。没有填充的卷积所导致的缩小是不理想的,如果你有一个非常深的网络,你很快就会得到非常低维的表示,这些表示会丢失数据中的大部分相关信息。相反,你希望以一种智能的方式缩小维度,这就是通过池化实现的。特别是,Max Pooling被发现效果很好。这真的是一个经验结果,即没有很多理论来解释为什么会这样。你可以想象,通过对附近的激活值取最大值,你仍然保留了该区域中某个特定特征存在的信息,同时丢失了关于其确切位置的信息。这可能是好事也可能是坏事。好的一面是它为你提供了平移不变性,而坏的一面是确切位置可能对你的问题很重要。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注