pad2d

paddle.fluid.layers.pad2d ( input, paddings=[0, 0, 0, 0], mode=’constant’, pad_value=0.0, data_format=’NCHW’, name=None ) [源代码]

该OP依照 paddings 和 mode 属性对input进行2维 pad

参数:

  • input (Tensor) - 类型为float32的4-D Tensor, 格式为 [N, C, H, W] 或 [N, H, W, C] 。

  • paddings (Tensor | List[int32]) - 填充大小。如果paddings是一个List,它必须包含四个整数 [padding_top, padding_bottom, padding_left, padding_right] 。 如果paddings是Tensor, 则是类型为int32 的1-D Tensor,形状是 [4] 。默认值为 [0,0,0,0] 。

  • mode (str) - padding的三种模式,分别为 ‘constant’ (默认)、 ‘reflect’ 、 ‘edge’ 。 ‘constant’ 为填充常数 pad_value , ‘reflect’ 为填充以input边界值为轴的映射, ‘edge’ 为填充input边界值。具体结果可见以下示例。默认值为 ‘constant’ 。

  • pad_value (float32) - 以 ‘constant’ 模式填充区域时填充的值。默认值为0.0。

  • data_format (str) - 指定input的格式,可为 ‘NCHW’ 和 ‘NHWC’ ,默认值为 ‘NCHW’ 。

  • name (str, 可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 Name ,默认值为None。

返回:Tensor,对input进行2维 pad 的结果,数据类型和input一样的4-D Tensor。

示例

  1. Input = [[[[1., 2., 3.],
  2. [4., 5., 6.]]]]
  3. Case 0:
  4. paddings = [0, 1, 2, 3],
  5. mode = 'constant'
  6. pad_value = 0
  7. Out = [[[[0., 0., 1., 2., 3., 0., 0., 0.],
  8. [0., 0., 4., 5., 6., 0., 0., 0.],
  9. [0., 0., 0., 0., 0., 0., 0., 0.]]]]
  10. Case 1:
  11. paddings = [0, 1, 2, 1],
  12. mode = 'reflect'
  13. Out = [[[[3., 2., 1., 2., 3., 2.],
  14. [6., 5., 4., 5., 6., 5.],
  15. [3., 2., 1., 2., 3., 2.]]]]
  16. Case 2:
  17. paddings = [0, 1, 2, 1],
  18. mode = 'edge'
  19. Out = [[[[1., 1., 1., 2., 3., 3.],
  20. [4., 4., 4., 5., 6., 6.],
  21. [4., 4., 4., 5., 6., 6.]]]]

代码示例:

  1. import numpy as np
  2. import paddle
  3. import paddle.nn.functional as F
  4. # example 1
  5. x_shape = (1, 1, 3, 4)
  6. x = np.arange(np.prod(x_shape), dtype=np.float32).reshape(x_shape) + 1
  7. tensor_x = paddle.to_tensor(x)
  8. y = F.pad2d(tensor_x, paddings=[1, 2, 2, 1], pad_value=1, mode='constant')
  9. print(y.numpy())
  10. # [[[[ 1. 1. 1. 1. 1. 1. 1.]
  11. # [ 1. 1. 1. 2. 3. 4. 1.]
  12. # [ 1. 1. 5. 6. 7. 8. 1.]
  13. # [ 1. 1. 9. 10. 11. 12. 1.]
  14. # [ 1. 1. 1. 1. 1. 1. 1.]
  15. # [ 1. 1. 1. 1. 1. 1. 1.]]]]
  16. # example 2
  17. x_shape = (1, 1, 2, 3)
  18. x = np.arange(np.prod(x_shape), dtype=np.float32).reshape(x_shape) + 1
  19. tensor_x = paddle.to_tensor(x)
  20. y = F.pad2d(tensor_x, paddings=[1, 1, 1, 1], mode='reflect')
  21. print(y.numpy())
  22. # [[[[5. 4. 5. 6. 5.]
  23. # [2. 1. 2. 3. 2.]
  24. # [5. 4. 5. 6. 5.]
  25. # [2. 1. 2. 3. 2.]]]]