当涉及深度神经网络和卷积神经网络时,我对过滤器/内核的差异有些困惑。例如,对于每种情况,假设输入图像为8x8x3。在深度方向上将有3个滤镜(例如3x3x1),在reg conv2d中将有1个滤镜(3x3x3)。它是否正确?
在深度上,三个滤镜中的每一个都不相同。在reg conv2d中,每个过滤器的“通道”(是否正确吗?)是否不同?还是都一样?
如果它们不同,则这两个操作有何不同?我知道在dw中,您可以包含一个通道倍增器(这样输出深度将始终是其输入深度的倍数)。在reg conv2d中,您可以有多个3x3x3滤镜,也可以增加输出深度。
因此,基本上,我对其中的区别感到困惑。
答案 0 :(得分:0)
由于可分离性概念,实现相同输出大小的参数数量(以及乘法运算和速度)有所不同。如果您是图像卷积的资深人士,您可能知道某些3x3滤镜可以分成两个1x3滤镜(最著名的例子是sobel滤镜)。因此,仅用6个参数(而不是9个)就可以进行相同的计算。深度应用该概念将卷积的空间部分与通道部分分开-一次在一个通道上进行空间卷积,然后添加标准的1x1卷积层更改通道数。这样使用的参数少得多,因此乘法也少得多。
您的特定示例实际上是不正确的(或至少具有误导性),因为3个深度过滤器的输出为8x8x3,而单个conv过滤器的输出为8x8x1。但是即使如此,正如您正确提示的那样,您确实可以创建一个获得相同答案的标准卷积层-关键是后者具有更多参数,因此速度较慢。在您的示例中,要获得与深度情况相同的输出,您将需要3个过滤器,因此参数的数量是深度情况的3倍,尽管我们相对于典型情况而言有点欺骗,因为没有额外的1x1通道更改层所以让我们修复它。通常,如果您想将示例切换为输出8x8xN,则标准方法将使用Nx3x3x3参数,而深度方法将使用3x3x3 + Nx3x1x1-因此27N vs(3N + 27)。
从理论上讲,人们可能期望可分离性限制会降低学习能力,但我想在实践中似乎不是这种情况,或者只是极小的情况,因此值得在速度上进行权衡。也许“有用的”过滤器具有很强的可分离性,索伯将再次成为一个很好的例子,但我个人不知道有什么证据可以支持。
本文是非常有用且更全面的说明: https://towardsdatascience.com/a-basic-introduction-to-separable-convolutions-b99ec3102728