卷积层中的填充类型
让我们讨论一下卷积层中的填充及其类型。在卷积层中,我们有内核,为了使最终的过滤器提供更多信息,我们在图像矩阵或任何类型的输入数组中使用填充。我们有以下三种类型的填充。
- 填充完整:
让我们假设一个内核作为一个滑动窗口。我们必须提供在输入数组上填充零的解决方案。这是一个非常有名的实现,通过一个简单的示例可以更容易地展示它是如何工作的,将 x 视为过滤器,将 h 视为输入数组。
x[i] = [6, 2]
h[i] = [1, 2, 5, 4]使用零填充,我们可以计算卷积。
您必须反转过滤器 x,否则操作将是互相关的。第一步,(现在零填充):
= 2 * 0 + 6 * 1 = 6
第二步:
= 2 * 1 + 6 * 2 = 14
第三步:
= 2 * 2 + 6 * 5 = 34
第四步:
= 2 * 5 + 6 * 4 = 34
第五步:
= 2 * 4 + 6 * 0 = 8
这种情况下的卷积结果,列出了上述所有步骤,将是:Y = [6 14 34 34 8]
# importing numpy import numpy as np x = [6, 2] h = [1, 2, 5, 4] y = np.convolve(x, h, "full") print(y)
输出:[ 6 14 34 34 8]
- 填充相同:
在这种类型的填充中,我们只将零附加到数组的左侧和二维输入矩阵的顶部。
# importing numpy import numpy as np x = [6, 2] h = [1, 2, 5, 4] y = np.convolve(x, h, "same") print(y)
输出:[ 6 14 34 34]
- 填充有效:
在这种类型的填充中,随着输出数组的大小减小,我们得到了减小的输出矩阵。我们仅在 h 数组上具有兼容位置时才应用内核,在某些情况下您需要降维。
# importing numpy import numpy as np x = [6, 2] h = [1, 2, 5, 4] y = np.convolve(x, h, "valid") print(y)
输出:[14 34 34]