📜  卷积层中的填充类型

📅  最后修改于: 2022-05-13 01:55:43.375000             🧑  作者: Mango

卷积层中的填充类型

让我们讨论一下卷积层中的填充及其类型。在卷积层中,我们有内核,为了使最终的过滤器提供更多信息,我们在图像矩阵或任何类型的输入数组中使用填充。我们有以下三种类型的填充。

  1. 填充完整:

    让我们假设一个内核作为一个滑动窗口。我们必须提供在输入数组上填充零的解决方案。这是一个非常有名的实现,通过一个简单的示例可以更容易地展示它是如何工作的,将 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]
    
  2. 填充相同:

    在这种类型的填充中,我们只将零附加到数组的左侧和二维输入矩阵的顶部。

    # 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]
    
  3. 填充有效:

    在这种类型的填充中,随着输出数组的大小减小,我们得到了减小的输出矩阵。我们仅在 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]