【问题标题】:How many neurons does the CNN input layer have?CNN输入层有多少个神经元?
【发布时间】:2019-02-15 18:17:07
【问题描述】:

在所有文献中,他们都说卷积网络的输入层是一个形状张量(宽度、高度、通道)。我知道一个完全连接的网络有一个输入层,其神经元数量与图像中的像素数量相同(考虑灰度图像)。所以,我的问题是卷积神经网络的输入层中有多少个神经元? below image 似乎具有误导性(或者我理解错了)它说输入层中有 3 个神经元。如果是这样,这 3 个神经元代表什么?它们是张量吗?根据我对 CNN 的理解,不应该只有一个大小(高度、宽度、通道)的神经元吗?如有错误请指正

【问题讨论】:

  • 所以如果我理解正确的话,你理解了全连接层背后的概念,但是你似乎对卷积层有3维感到困惑?
  • 是的,没错。我想知道我们如何将 CNN 可视化为神经元?就像我上传的图片一样。我想知道输入层中那 3 个神经元是什么意思。
  • 好酷 :) 如果答案不能解决所有问题,请告诉我

标签: deep-learning conv-neural-network tensor


【解决方案1】:

您似乎误解了一些术语,并且对卷积层具有 3 个维度感到困惑。

编辑:我应该明确一点,CNN 的输入层是卷积层。

任何层的神经元数量由开发者决定。对于全连接层,通常情况下每个输入都有一个神经元。因此,正如您在问题中提到的那样,对于图像,完全连接的输入层中的神经元数量可能等于像素数量(除非开发人员想在这一点上进行下采样)。这也意味着您可以创建一个完全连接的输入层,它获取每个通道(宽度、高度、通道)中的所有像素。虽然每个输入只被输入神经元接收一次,这与卷积层不同。

卷积层的工作方式略有不同。卷积层中的每个神经元都有我们所说的局部感受野。这只是意味着神经元没有连接到整个输入(这将被称为完全连接),而只是输入的一部分(必须是空间局部的)。这些输入神经元提供输入数据的小部分的抽象,当将它们放在整个输入中时,我们称为特征图

卷积层的一个重要特征是它们空间不变。这意味着他们在整个图像中寻找相同的特征。毕竟,您不希望经过对象识别训练的神经网络只识别位于图像左下角的自行车!这是通过将本地感受野中的所有权重限制为相同来实现的。卷积层中覆盖整个输入并寻找一个特征的神经元称为过滤器。这些滤镜是二维的(它们覆盖整个图像)。

但是,让整个卷积层只寻找一个特征(例如角点)会极大地限制网络的容量。因此开发人员添加了许多过滤器,以便该层可以在整个输入中查找许多特征。这个过滤器集合创建了一个 3 维卷积层。

希望对你有所帮助!

编辑- 使用操作员给出的示例来清理松散的结尾:

OP 的问题: 所以想象我们有 (27 X 27) 图像。假设每个尺寸有 3 个过滤器(3 X 3)。所以总共有 3 X 3 X 3 = 27 个参数(W)。所以我的问题是这些神经元是如何连接的?每个过滤器都必须迭代超过 27 个像素(神经元)。因此,一次有 9 个输入神经元连接到一个过滤神经元。这些连接会随着过滤器对所有像素的迭代而改变。

回答: 首先,重要的是要注意感受野重叠是典型的(而且通常很重要)。因此,对于 2 的重叠/步幅,左上神经元(神经元 A)的 3x3 感受野,其右侧神经元(神经元 B)的感受野也将具有 3x3 感受野,其最左边的 3 个连接可以采用与神经元 A 最右边的连接相同的输入。

话虽如此,我认为您似乎希望将其可视化,因此如果没有重叠,我将坚持您的示例,并假设我们不希望图像周围有任何填充。如果有一个分辨率为 27x27 的图像,我们想要 3 个滤镜(这是我们的选择)。然后每个过滤器将有 81 个神经元(9x9 2D 神经元网格)。这些神经元中的每一个都有 9 个连接(对应于 3x3 感受野)。因为有 3 个过滤器,每个过滤器有 81 个神经元,所以我们将有 243 个神经元。

我希望这可以解决问题。我很清楚,您对术语(层、过滤器、神经元、参数等)感到困惑。我建议您阅读一些博客以更好地理解这些内容,然后专注于 CNN。祝你好运:)

【讨论】:

  • 感谢您的回复。我已经理解了卷积层以及它们在空间上不变的想法。但是,我的问题是关于 CNN 中的输入层。我想直观地了解有多少输入神经元,它们是如何连接到卷积层的。
  • 我已经编辑了这个问题来回答你给出的例子,我还在关于 CNN 输入层的答案的开头附近添加了一个句子。 CNN 的输入层是卷积层。
  • 摘录81 neurons (9x9 2D grid of neurons)中的数字81来自哪里?
  • 9 x 9 = 81 如果你画一个正方形网格,有 9 行 9 列。那么有 81 个正方形。您可以将这些方形网格中的每一个视为一个感受野
  • 内核是 3x3,因此步幅为 3(如果内核位置不重叠)则使用 9x9 正方形的神经元覆盖图像。在一些纸上绘制 27x27 的正方形网格,在左上角的 3x3 中涂上红色,然后在蓝色右侧的 3x3 网格上涂上颜色,在每个 3x3 网格中涂上不同的颜色,以这种方式向侧面移动,然后向下移动。然后计算你用来覆盖 27x27 网格的 3x3 网格的数量......这将是一个 9x9 的彩色方块网格
【解决方案2】:

首先,让我们清理一下图像。该图像并未说明输入层中有确切 3 个神经元,它仅用于可视化目的。该图显示了网络的一般架构,用任意数量的神经元表示每一层。

现在,要了解 CNN,最好看看它们如何处理图像。

图像是 2D 对象,在计算机中表示为 2D 矩阵,每个单元格都有一个像素的强度值。一个图像可以有多个通道,例如彩色图像的传统 RGB 通道。因此,这些不同的通道可以被认为是图像中相同位置的图像不同维度的值(在 RGB 的情况下,这些是颜色维度)。

另一方面,神经层是一维的。它们从一端获取输入,从另一端提供输出。那么我们如何在 1D 神经层中处理 2D 图像呢? 卷积神经网络 (CNN) 在这里发挥作用。

通过在一个通道中连接连续的行,然后是连续的通道,可以将 2D 图像展平为单个 1D 矢量。大小(宽度、高度、通道)的图像将变成大小(宽度 x 高度 x 通道)的一维向量,然后将其馈送到 CNN 的输入层。因此,为了回答您的问题,CNN 的输入层的神经元数量与其所有通道中图像中的像素数量一样多。

我认为您对神经元的基本概念有混淆:

根据我对 CNN 的理解,不应该只有一个大小(高度、宽度、通道)的神经元吗?

将神经元视为单个计算单元,一次不能处理多个数字。因此,单个神经元无法一次处理图像的所有像素。一个由许多神经元组成的神经层用于处理整个图像。

希望这能消除您的一些疑虑。如有任何疑问,请随时在 cmets 中提问。 :)

编辑:

假设我们有 (27 X 27) 图像。假设每个尺寸有 3 个过滤器(3 X 3)。所以总共有 3 X 3 X 3 = 27 个参数(W)。所以我的问题是这些神经元是如何连接的?每个过滤器都必须迭代超过 27 个像素(神经元)。因此,一次有 9 个输入神经元连接到一个过滤神经元。这些连接会随着过滤器对所有像素的迭代而改变。

我的理解对吗?我只是想将 CNN 可视化为具有连接的神经元。

可视化 CNN 过滤器的一种简单方法是将它们想象成您在图像上移动的小窗口。在您的情况下,您有 3 个大小为 3x3 的过滤器。

  1. 我们通常使用多个过滤器,以便从相同的局部感受野(正如 michael_question_answerer 恰当地说)或更简单的术语,即我们的窗口中学习不同种类的特征。每个过滤器的权重都是随机初始化的,因此每个过滤器学习的特征略有不同。

  2. 现在想象每个滤镜在图像上移动,一次只覆盖一个 3x3 的网格。我们定义了一个 stride 值,它指定窗口向右移动多少,向下移动多少。在每个位置,窗口中的过滤器权重和图像像素将在新创建的 volume 中给出一个新值。因此,为了回答您的问题,在一个实例中,总共 3x3=9 个像素与对应于一个过滤器的 9 个神经元相连。其他 2 个过滤器也是如此。

您通过可视化理解 CNN 的方法是正确的。但是你仍然需要复习你对术语的基本理解。这里有一些很好的资源应该会有所帮助: http://cs231n.github.io/convolutional-networks/

https://adeshpande3.github.io/A-Beginner%27s-Guide-To-Understanding-Convolutional-Neural-Networks/

希望这会有所帮助。保持好奇心:)

【讨论】:

  • 上面的答案说每个过滤器中有 81 个神经元,而您说每个过滤器有 9 个神经元,想知道哪个是正确的
猜你喜欢
  • 2020-12-06
  • 1970-01-01
  • 2022-12-11
  • 2017-03-27
  • 2015-04-02
  • 2018-10-20
  • 2017-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多