为什么卷积1x1用于深度神经网络?

时间:2016-09-07 09:33:37

标签: neural-network tensorflow deep-learning convolution conv-neural-network

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

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

2 个答案:

答案 0 :(得分:36)

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

如果您的输入音量为100x100x512,并且您使用一组D过滤器对其进行卷积,每个过滤器的大小为1x1x512,则会将要素数量从512减少到D. 因此,输出量为100x100xD

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

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

此外,1x1xD卷积不仅减少了输入到下一层的功能,还在网络中引入了新参数和新的非线性,有助于提高模型的准确性。

1x1xD卷积放置在分类网络的末尾时,它的作用与FC层完全相同,但不是将其视为降维技术,而是更直观地考虑它作为一个层,将输出一个形状为WxHxnum_classes的张量。

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

如果使用200x200x3的输入定义了网络,并且我们在输入中为其提供了此尺寸的图片,则输出将是W = H = 1和深度= num_classes的地图。 但是,如果输入图像的空间范围大于200x200,则卷积网络将分析输入图像的不同位置(就像标准卷积一样),并将生成具有W > 1和{的张量{1}}。 对于限制网络接受固定大小输入并产生固定大小输出的FC层,这是不可能的。

答案 1 :(得分:3)

1x1卷积只是将输入像素映射到输出像素,而不是查看周围的任何内容。它通常用于减少深度通道的数量,因为在具有极大深度的体积倍增时通常非常慢。

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

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

底部慢约3.7倍。

理论上,神经网络可以选择'输入的颜色'看看使用它,而不是蛮力倍增一切。