为什么在深度神经网络中使用卷积 1x1?

For what reason Convolution 1x1 is used in deep neural networks?

我正在查看 InceptionV3 (GoogLeNet) 架构,无法理解为什么我们需要 conv1x1 层?

我知道卷积是如何工作的,但我看到了补丁大小 > 1 的利润。

您可以将 1x1xD 卷积放在网络中的某个位置时视为一种降维技术。

如果您有一个 100x100x512 的输入量,并且您将其与一组 D 个过滤器进行卷积,每个过滤器的大小为 1x1x512,您可以将特征数量从 512 减少到 D . 因此,输出量为 100x100xD.

如您所见,此 (1x1x512)xD 卷积在数学上等同于全连接层。主要区别在于,虽然 FC 层要求输入具有固定大小,但卷积层可以在输入中接受空间范围大于或等于 100x100.

的每个体积。

一个1x1xD卷积可以替代任何全连接层,因为这个等价。

此外,1x1xD卷积不仅减少了输入到下一层的特征,而且在网络中引入了新的参数和新的非线性,有助于提高模型精度。

1x1xD 卷积被放置在分类网络的末端时,它完全充当 FC 层,但与其将其视为降维技术,不如将其视为更直观的将输出形状为 WxHxnum_classes.

的张量的层

输出张量(由 WH 标识)的空间范围是动态的,由网络分析的输入图像的位置决定。

如果网络定义为输入 200x200x3 并且我们在输入中给它一个这个大小的图像,输出将是一个 W = H = 1 和深度 = [=25 的地图=]. 但是,如果输入图像的空间范围大于 200x200,则卷积网络将分析输入图像的不同位置(就像标准卷积所做的那样),并将产生具有 W > 1H > 1。 这对于约束网络接受固定大小输入并产生固定大小输出的 FC 层是不可能的。

1x1 卷积简单地将输入像素映射到输出像素,而不查看其周围的任何东西。它通常用于减少深度通道的数量,因为乘以具有极大深度的体积通常非常慢。

input (256 depth) -> 1x1 convolution (64 depth) -> 4x4 convolution (256 depth)

input (256 depth) -> 4x4 convolution (256 depth)

底部的大约慢 3.7 倍。

理论上神经网络可以 'choose' 哪个输入 'colors' 来查看使用这个,而不是蛮力乘以一切。