【问题标题】:What is "linear projection" in convolutional neural network [closed]什么是卷积神经网络中的“线性投影”
【发布时间】:2018-02-17 15:55:51
【问题描述】:

我正在阅读Residual learning,我有一个问题。 什么是3.2中提到的“线性投影”?得到这个之后看起来很简单,但无法理解......

我基本上不是计算机科学的人,所以如果有人能给我一个简单的例子,我将不胜感激。

【问题讨论】:

    标签: machine-learning neural-network projection deep-residual-networks


    【解决方案1】:

    在 Pytorch(特别是 torchvision\models\resnet.py)中,在瓶颈结束时,您将有两种情况

    1. 输入向量 x 的通道,比如 x_c(不是空间分辨率,而是通道),小于等于瓶颈层 conv3 之后的输出,比如 d 维度。然后可以通过 1 x 1 卷积来缓解这种情况,其中 in planes = x_c 和 out_planes = d,步幅为 1,然后进行批量归一化,然后假设 x 和 F(x) 具有相同的空间分辨率。

    2. x 的空间分辨率和它的通道数都与 BottleNeck 层的输出不匹配,在这种情况下,上面提到的 1×1 卷积需要步长 2 才能获得空间分辨率和数量与元素相加相匹配的通道数(同样在相加之前对 x 进行批量标准化)。

    【讨论】:

      【解决方案2】:

      首先,重要的是要了解xyF 是什么以及它们为什么需要任何投影。我会尽量简单解释,但需要对ConvNets有基本的了解。

      x 是层的输入数据(称为 tensor),在 ConvNets 的情况下,它的等级是 4。你可以将其视为 4-dimensional arrayF 通常是一个卷积层(本文中为conv+relu+batchnorm),y 将两者结合在一起(形成输出通道)。 F 的结果也是第 4 位,除了一个之外,大部分维度将与 x 中的相同。这正是转换应该修补的内容。

      例如,x 形状可能是 (64, 32, 32, 3),其中 64 是批量大小,32x32 是图像大小,3 代表 (R, G, B) 颜色通道。 F(x) 可能是 (64, 32, 32, 16):批量大小永远不会改变,为简单起见,ResNet 卷积层也不会改变图像大小,但可能会使用不同数量的过滤器 - 16。

      因此,为了使y=F(x)+x 成为有效操作,必须将x(64, 32, 32, 3)“重塑”为(64, 32, 32, 16)

      我想在这里强调一下,这里的“重塑”不是numpy.reshape 所做的。

      相反,x[3] 用 13 个零填充,如下所示:

      pad(x=[1, 2, 3],padding=[7, 6]) = [0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0]
      

      如果你仔细想想,这是一个 3 维向量到 16 维的投影。换句话说,我们开始认为我们的向量是相同的,但是还有 13 个维度。其他 x 维度均未更改。

      这是 TensorFlow 中执行此操作的代码的 the link

      【讨论】:

      • 非常感谢!我主要使用matlab而不是python,我猜可能存在误解。在matlab中最后一维是# of image在python中第一个维度是# of image。
      • 知道了。顺序可能不同,但应该按照答案中的说明进行投影。
      • 请忽略以上一项。
      • 啊……再一次……习惯性地一拳打进。以下是我的实际问题:非常感谢,但我仍有疑问。我责备我的笨拙。我的第一个问题是关于残差连接中的宽度和高度减少。例如,他们使用 2 的步幅,这将导致宽度和高度减少,而不是过滤器的数量。这是我的第一个问题。在我得到你的教训后,我意识到不同数量的频道也会导致问题。你能再给我上一课吗?我的意思是残差连接中的不同(宽度和高度)和(不同的通道)?
      • 好问题,但这里没有足够的空间来完全回答它。简而言之:当该层对图像进行下采样时(通过使用strides=2),x以相同的步幅通过一个池化层。所以F(x)x 都将图像的大小缩小了一半,就像之前一样,只需要投影“通道”维度。我只能在python中找到一个例子:github.com/tflearn/tflearn/blob/master/examples/images/…你可以看到downsample=True的两个图层,这两个图层都缩小了图像。
      【解决方案3】:

      线性投影是每个新特征都是原始特征的简单加权和。如论文中所述,这可以用矩阵乘法来表示。如果xN 输入特征的向量并且WM-byN 矩阵,则矩阵乘积Wx 产生M 新特征,其中每个特征都是xW 的每一行是一组权重,定义了 M 线性投影之一(即,W 的每一行包含x 的加权和之一的系数)。

      【讨论】:

      • 感谢您的友好解释。请确认我是否理解正确。如果输入 x 有 3X3,我们想将它投影到 4X4。然后,我们将 x[3X3] 向量化为 [9X1]。 W 将是 [16X9]。因此,W [16X9] x [9X1] = [16X1],并将其重塑为 [4X4]。这是你解释的吗?
      • 是的,你明白了。
      • @W.Choi 这个答案在技术上是正确的,但有点误导,正如您的评论所见。请看我的回答。
      猜你喜欢
      • 2017-11-25
      • 2017-01-01
      • 1970-01-01
      • 2014-12-13
      • 1970-01-01
      • 1970-01-01
      • 2016-10-19
      • 1970-01-01
      相关资源
      最近更新 更多