“深入卷积”中的DepthConcat操作如何工作?


Answers:


9

我认为启动模块的输出大小不一样。

在此处输入图片说明

对于卷积层,人们经常使用填充来保留空间分辨率。

其他卷积层中的右下池化层(蓝框)可能看起来很尴尬。但是,与传统的池子采样层(红色框,步幅> 1)不同,他们在池层中使用步幅1。第1步合并层实际上以与卷积层相同的方式工作,但是卷积操作由max操作代替。

因此,池化层之后的分辨率也保持不变,我们可以在“深度”维度将池化和卷积层连接在一起。

在此处输入图片说明

如上图所示,接收模块实际上保持了空间分辨率。


6

当您阅读该白皮书时,我有一个相同的想法,所引用的资源已帮助我提出了一个实施方案。

您引用Torch代码中,它说:

--[[ DepthConcat ]]--
-- Concatenates the output of Convolutions along the depth dimension
-- (nOutputFrame). This is used to implement the DepthConcat layer
-- of the Going deeper with convolutions paper :

深度学习中的“深度”一词有点含糊。幸运的是,此SO Answer提供了一些清晰度:

在深度神经网络中,深度指的是网络的深度,但是在这种情况下,深度用于视觉识别,并转换为图像的第三维。

在这种情况下,您有一张图像,此输入的大小为32x32x3,即(宽度,高度,深度)。当深度转换为训练图像的不同通道时,神经网络应该能够基于该参数进行学习。

因此,DepthConcat将深度张量连接到深度尺寸上,该深度尺寸是张量的最后一个尺寸,在本例中是3D张量的第3个尺寸。

DepthConcat需要使除深度维度外的所有维度上的张量相同,如Torch代码所示

-- The normal Concat Module can't be used since the spatial dimensions
-- of tensors to be concatenated may have different values. To deal with
-- this, we select the largest spatial dimensions and add zero-padding
-- around the smaller dimensions.

例如

A = tensor of size (14, 14, 2)
B = tensor of size (16, 16, 3)
result = DepthConcat([A, B])
where result with have a height of 16, a width of 16 and a depth of 5 (2 + 3). 

在此处输入图片说明

在上图中,我们看到了DepthConcat结果张量的图片,其中白色区域是零填充,红色是A张量,绿色是B张量。

这是此示例中DepthConcat的伪代码:

  1. 查看张量A和张量B并找到最大的空间尺寸,在这种情况下,张量B的宽度为16,高度为16。由于张量A太小并且与张量B的空间尺寸不匹配,因此需要填充。
  2. 通过将零添加到第一维和第二维上以形成张量A的大小(16、16、2),以零填充张量A的空间尺寸。
  3. 沿着深度(第3个)维度将填充的张量A与张量B连接起来。

我希望这可以帮助其他认为相同问题的人阅读该白皮书。


是的,完美的介绍。这是在深度方向上串联的。不在空间方向上。
Shamane Siriwardhana
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.