CNNs的每个节点范围更窄,因此每层的范围更大?

我在描述CNN和DNN差异时遇到了这句话:

卷积在图像处理中具有显著优势,因为相邻的像素对于图像检测的相关性更高。

以及

每个CNN层查看图像的越来越大的部分。

然而,我无法理解这句话背后的理念。CNN使用较少的连接到下一层,但如何通过缩小每个节点的范围来增加下一层的范围呢?我是否误解了什么,还是这句话确实有其背后的理念?

谢谢。


回答:

就你的问题而言,这两个陈述在某种程度上是无关的,听起来是第二个陈述引起了你的困惑:

每个CNN层查看图像的越来越大的部分。

我认为这是指卷积/池化层的输入体积通常(或有时)大于输出体积。这是如何发生的呢?请看以下来自这里的图片:

enter image description here

输出体积中的每个“神经元”都是通过对输入进行卷积操作计算得出的。在示例图片中,他们使用了一个3x3x3的滤波器,在一次处理输入的3x3x3窗口。这会生成输出中的一个值。根据他们选择的步长大小,这个过程最终会生成一个比输入更小的输出体积(7x7x3对比3x3x2)。请注意,卷积操作并不总是生成更小的输出(这取决于填充、步长大小等)。然而,池化层会相对于输入减少输出的尺寸。

这个相对减少的输出体积被传递到下一个卷积层(C2)。因为C2的输入比原始图像小,C2中的每个滤波器同时查看“图像”的更大部分。

这几乎就像拥有一个固定大小的窗口,但每次你通过它查看时,图像都在变小——看起来你每次都在查看图像的越来越多部分。

我应该指出,即使输出尺寸从未减少,这个陈述也是正确的。想象一下,你有一组卷积层,其中输出体积始终保持相同的大小(出于某种原因)。输出体积中的每个单元格编码了来自多个周围输入单元格的信息。当你将这个输出传递给C2时,C2的内核将查看输入的一个窗口,但输入的那部分实际上包含了在前几层中从其他周围像素编码的信息。因此,随着你穿过各层,滤波器每次查看的周围信息越来越多。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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