我正在查看InceptionV3(GoogLeNet)架构,无法理解为什么我们需要conv1x1层?
我知道卷积是如何工作的,但我看到补丁大小的利润> 1.
答案 0 :(得分:36)
当1x1xD
卷积放置在某个网络中时,您可以将其视为降维技术。
如果您的输入音量为100x100x512
,并且您使用一组D
过滤器对其进行卷积,每个过滤器的大小为1x1x512
,则会将要素数量从512减少到D.
因此,输出量为100x100xD
。
正如您所看到的,这个(1x1x512)xD
卷积在数学上等同于完全连接的层。主要区别在于,虽然FC层要求输入具有固定大小,但卷积层可以在输入中接受空间范围大于或等于100x100
的每个卷。
1x1xD
卷积可以替代任何完全连接的层,因为这种等价。
此外,1x1xD
卷积不仅减少了输入到下一层的功能,还在网络中引入了新参数和新的非线性,有助于提高模型的准确性。
当1x1xD
卷积放置在分类网络的末尾时,它的作用与FC层完全相同,但不是将其视为降维技术,而是更直观地考虑它作为一个层,将输出一个形状为WxHxnum_classes
的张量。
输出张量的空间范围(由W
和H
标识)是动态的,由网络分析的输入图像的位置决定。
如果使用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倍。
理论上,神经网络可以选择'输入的颜色'看看使用它,而不是蛮力倍增一切。