Answers:
假设我有一个conv层,输出一个形张量,其中:
假设此输出通过 1x1滤波器,零填充和跨度1 馈入一个conv层,则此1x1 conv层的输出将具有形状。
因此1x1转换滤镜可用于更改滤镜空间中的尺寸。如果那么我们在过滤器维中增加维数;如果我们在过滤器维中减小维数。
确实,在Google Inception的文章“用卷积更深入”中,他们指出(粗体是我的,不是原始作者的):
至少以这种幼稚的形式,上述模块的一个大问题是,即使是少量的5x5卷积,在具有大量过滤器的卷积层之上,也可能是非常昂贵的。
这导致了所提出的体系结构的第二个想法:明智地在任何情况下如果计算需求会增加太多的地方进行尺寸缩减和投影。这是基于嵌入的成功:即使是低维的嵌入也可能包含有关相对较大图像补丁的许多信息... 1x1卷积用于计算代价高昂的3x3和5x5卷积之前的缩减量。除了用作减少量外,它们还包括使用整流线性激活,使其具有双重用途。
因此,在Inception架构中,我们使用1x1卷积滤波器来减少滤波器维数。如上文所述,这些1x1转换层通常可用于更改滤镜空间维数(增加或减小),在Inception体系结构中,我们看到了这些1x1滤镜对于降维效果如何,尤其是在滤镜维空间中,而不是空间维度空间。
也许还有其他1x1转换过滤器的解释,但是我更喜欢这种解释,尤其是在Google Inception体系结构的背景下。
1x1卷积只是将输入像素及其所有通道映射到输出像素,而不会查看周围的任何东西。它通常用于减少深度通道的数量,因为倍增具有极大深度的体积通常非常缓慢。
input (256 depth) -> 1x1 convolution (64 depth) -> 4x4 convolution (256 depth)
input (256 depth) -> 4x4 convolution (256 depth)
最底层的大约慢3.7倍。
从理论上讲,神经网络可以使用此功能“选择”要输入的“颜色”,而不用蛮力相乘。
num_weights = in_depth x out_depth x kernel_size = 256x256x4x4
。在第一种情况下,num_weights = 256x64x1x1+64x265x4x4=256x64x17
。取比例得出256/17〜3.7。查看第9页的白皮书,以直观地了解数字权重与输入深度和输出深度之间的关系。arxiv.org/pdf/1603.07285.pdf
我不了解1x1卷积的主要原因是因为我不了解卷积是如何工作的-关键因素是如何计算多个通道/滤波器的卷积。为了理解这一点,我发现这个答案也很有用:
https://datascience.stackexchange.com/questions/9175/how-do-subsequent-convolution-layers-work
特别地,类型2.2是对卷积的正确描述。
另一个有用的答案:
该答案说明了如何为每个输入/输出通道组合设置单独的过滤器。计算完这些值后,结果将在输入通道轴上求和,剩下的值与输出通道数相同。
这是我发现的视频,可以帮助我了解1x1卷积的工作原理。
这是我从中得到的主要信息:
一个1个* 1 CONV(又名网络网络)?
假设您输入的是(n_H,n_W,n_c_prev)。你可以认为(1 * 1 * n_c_prev)作为单个神经元(全连接网络 -也就是说,为什么N / W的N / W),其正在上(n_c_prev)数字输入与乘以他们(1 * 1 * n_c_prev ),然后添加然后取ReLu&输出(n_H,n_W),如果您有多个滤镜(n_c),则输出将是(n_H,n_W,n_C)。
因此,您可以使用池化层来减少空间尺寸(n_H,n_W),并可以使用1 * 1 conv来减少n_c_prev(即通道数),从而节省了大量计算量。例如
因此,带走
您可以使用1x1卷积层来减少n_C,但不能减少n_H,n_W。
您可以使用池化层来减少n_H,n_W和n_C。
您正在使用1 * 1 CONV滤镜做什么?您基本上将“ 1 * 1 * num_input_channel_of_featureMap”的大小权重并卷积(在elementwise *后加上+),将其卷在大小为“ W H num_input_channel_of_featureMap”的图像/特征图上,得到的结果是大小为“ W * H”的输出。
现在,您可以使用此类“ 1 * 1 * num_input_channel_of_featureMap”的“ #filters”编号,并将卷“ W H #filter”作为最终输出!
更准确地说,您是将“ 32 * 1”这样的32个不同权重(1 * 1体积)乘以输入要素图中同一位置的一个切片,然后乘以ReLu并生成一个相应的数字,即绿色像素!
1 * 1 CONV有助于减少通道数并节省某些网络中的计算量(INCEPTIONS)。
但是,当然,如果您想使通道数与输入要素图保持相同,那也很好,1 * 1 CONV所做的一件事就是简单地对其应用ReLU非线性,这使它可以学习复杂的函数。 NN。
关于1x1过滤器降维的另一个想法:
以FCN中的4096x8x8 fc7层为例。如果下一层(称为fc8)是2048x8x8,且过滤器大小为1,会发生什么情况?fc7在网络内部非常深,它的4096个功能在语义上都很丰富,但是每个神经元(例如,输入图像为250x250x3)具有很大的接收范围。换句话说,如果神经元非常活跃,我们知道在其语义字段中的某个位置存在相应的特征。
以fc8中具有1x1滤镜的左上神经元为例。它仅在同一接受区域(图像的左上角)连接到所有4096个神经元/特征,每个区域都由一个特征激活。其中一些(还是500个)非常活跃。如果产生的神经元也非常活跃,则意味着它可能学会了识别该接受域中的1个或多个特征。当您对fc8中的最上层神经元执行2048次此操作后,其中的许多神经元(例如250个)将非常活跃,这意味着它们从fc7的同一感受野中“收集”了特征,并且很可能超过一。
如果您继续降低尺寸,则越来越少的神经元将从同一个感受野中学习越来越多的特征。并且由于空间参数8x8保持不变,因此我们不会更改每个神经元的“视图”,因此不会降低空间粗糙度。
您可能想看一下Long,Shelhamer和Darrel的“完全卷积网络”。
卷积的数学运算意味着在所有可能的移位位置上计算两个(连续或离散)函数的乘积。
在二维(灰度级)图像中,通过滑动窗口操作执行卷积,其中窗口(二维卷积内核)是 ×矩阵。
神经网络(包括卷积神经网络)的图像处理应用已在以下文献中进行了综述:Egmont-Petersen,D.de Ridder和H.Handels。用神经网络进行图像处理-综述,模式识别,第1卷。35,第10号,第2279-2301页,2002年]。