卷积算子产生矩阵的负索引

数据挖掘 机器学习 神经网络
2022-03-14 18:10:04

当我从互联网上阅读卷积神经网络时,比如这个我发现离散卷积算子的定义如下:

C=IF
C(x,y)=a=0k1b=0k1I(xa,yb)F(a,b)

大小在哪里Fk×k, 假设 F 的大小为3×3和大小I9×9, 然后C(1,1)=+F(2,2)I(12,12)+那是没有意义的I有负索引,我如何计算矩阵C? 我们改变矩阵索引的方式吗?

1个回答

有两种方法可以采取:

  • 仅使用有效索引。矩阵 C 将小于矩阵 I,在您的示例中,它将是一个 7x7 矩阵(9 - 3 + 1 = 7)。您可能会在神经网络库中将其视为使用“有效”边界的卷积。

  • 对矩阵 I 中的越界索引使用合成值(通常仅为 0)来计算 C。这会产生与输入相同大小的输出,因此一些神经网络库会用“相同”的边界来说明这一点。

您的公式表明正在使用“相同”边界*,因为从偏移角开始使用矩阵 C 是不寻常的。如果您确实使用“相同”边界,那么将输入图像数据像素归一化为 0 是很重要的,否则合成边界将显示为内核的强边缘。

如果您正在开发自己的 CNN 代码,我建议使用“有效”边框模式,因为它更简单,也是更常见的方法。它适用于图像分类任务。


*实际上我认为您发布的公式过于简单甚至是错误的。我希望看到这个词I(x+a,y+b)以便 C 的左上角索引保持为 (1,1) 以获得“有效”边界。对于“相同”的边界,我希望看到一个居中的内核。