oneflow.nn.ConstantPad2d

class oneflow.nn.ConstantPad2d(padding)

This operator pads the input with constant value that user specifies. User can set the amount of padding by setting the parameter paddings.

The interface is consistent with PyTorch. The documentation is referenced from: https://pytorch.org/docs/1.10/generated/torch.nn.ConstantPad2d.html.

Parameters
  • padding (int, tuple, list) – the size of the padding. If is int, uses the same padding in all boundaries. If a 4-tuple, uses (\(\mathrm{padding_{left}}\), \(\mathrm{padding_{right}}\), \(\mathrm{padding_{top}}\), \(\mathrm{padding_{bottom}}\))

  • value (int, float) – The constant value used for padding. Defaults to 0.

Shape:
  • Input: \((N, C, H_{in}, W_{in})\)

  • Output: \((N, C, H_{out}, W_{out})\) where

    \(H_{out} = H_{in} + \mathrm{padding_{top}} + \mathrm{padding_{bottom}}\) \(W_{out} = W_{in} + \mathrm{padding_{left}} + \mathrm{padding_{right}}\)

For example:

>>> import oneflow as flow
>>> import numpy as np

>>> m = flow.nn.ConstantPad2d((2, 2, 1, 1), 1)
>>> input = flow.tensor(np.arange(18).reshape((1, 2, 3, 3)).astype(np.float32))
>>> output = m(input)
>>> output.shape
oneflow.Size([1, 2, 5, 7])
>>> output
tensor([[[[ 1.,  1.,  1.,  1.,  1.,  1.,  1.],
          [ 1.,  1.,  0.,  1.,  2.,  1.,  1.],
          [ 1.,  1.,  3.,  4.,  5.,  1.,  1.],
          [ 1.,  1.,  6.,  7.,  8.,  1.,  1.],
          [ 1.,  1.,  1.,  1.,  1.,  1.,  1.]],

         [[ 1.,  1.,  1.,  1.,  1.,  1.,  1.],
          [ 1.,  1.,  9., 10., 11.,  1.,  1.],
          [ 1.,  1., 12., 13., 14.,  1.,  1.],
          [ 1.,  1., 15., 16., 17.,  1.,  1.],
          [ 1.,  1.,  1.,  1.,  1.,  1.,  1.]]]], dtype=oneflow.float32)