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

时间:2017-09-08 16:54:40

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

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

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

感谢您的帮助

3 个答案:

答案 0 :(得分:4)

首先,了解xyF是什么以及他们为什么需要任何投影,这一点非常重要。我会尝试用简单的术语解释,但需要对ConvNets有基本的了解。

x是图层的输入数据(称为 tensor ),如果ConvNets的排名为4.您可以将其视为{{3 }}。 F通常是转化层(本文中为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]

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

此处为{Tensorflow中的代码4-dimensional array执行此操作。

答案 1 :(得分:1)

线性投影是指每个新要素都是原始要素的加权和的简单投影。如本文所述,这可以用矩阵乘法表示。如果xN输入要素的向量而WM - N矩阵,那么矩阵乘积Wx会产生{ {1}}新功能,其中每个功能都是M的线性投影。 x的每一行都是一组权重,用于定义W个线性投影之一(即M的每一行包含{{1}的加权和之一的系数})。

答案 2 :(得分:0)

在Pytorch(尤其是torchvision \ models \ resnet.py)中,在瓶颈末尾,您将有两种情况

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

  2. x的空间分辨率及其通道数均与BottleNeck层的输出不匹配,在这种情况下,上述1乘1的卷积需要跨度为2才能获得空间分辨率以及与元素逐个添加相匹配的通道数(同样在添加之前对x进行批量归一化)。