什么是卷积神经网络中的“线性投影”

Tro*_*roy 7 machine-learning projection neural-network deep-residual-networks

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

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

Max*_*xim 6

首先登场的,了解什么是重要的xy而且F是为什么他们需要在所有任何预测。我将尝试用简单的术语进行解释,但需要对ConvNets有基本的了解。

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

例如,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]
Run Code Online (Sandbox Code Playgroud)

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

这是Tensorflow 中执行此操作的代码的链接

  • 好问题,但这里没有足够的空间来完全回答它。简而言之:当该层对图像进行下采样时(通过使用 `strides=2`),`x` 以相同的步幅通过一个池化层**以及**。所以 `F(x)` 和 `x` 都将图像的大小减少了一半,就像以前一样,只需要投影“通道”维度。我只能在 python 中找到一个例子:https://github.com/tflearn/tflearn/blob/master/examples/images/residual_network_mnist.py 你可以看到两个带有 `downsample=True` 的层,它们都缩小了图片。 (2认同)