Padding

Warning

IPaddingLayer is deprecated in TensorRT 8.2 and will be removed in TensorRT 10.0. Use ISliceLayer to pad the tensor, which supports new non-constant, reflects padding mode and clamp, and supports padding output with dynamic shape.

Pads with zeros (or trims) an input tensor along the two innermost dimensions and store the result in an output tensor.

Attributes

pre_padding the amount of pre-padding to use for each dimension. If positive, the tensor is pad with zeros, otherwise, it’s trimmed.

post_padding the amount of post-padding to use for each dimension. If positive, the tensor is pad with zeros, otherwise, it’s trimmed.

Inputs

input: tensor of type T.

Outputs

output: tensor of type T.

Data Types

T: int8, int32, float16, float32

Shape Information

input is a tensor with a shape of \([a_0,...,a_n], \, n \geq 4\)

output is a tensor with a shape of \([b_0,...,b_n]\), where:

\[\begin{split}p_j^{pre} - \text{pre padding at spatial dimension j}\\ p_j^{post} - \text{post padding at spatial dimension j}\\\end{split}\]
\[\begin{split}b_i = \begin{cases} a_i, & 0 \leq i < n-2 \\ a_i + p_j^{pre} + p_j^{post}, & n-2 \leq i < n, & j=i-(n-2) \end{cases}\end{split}\]

Examples

Padding
in1 = network.add_input("input1", dtype=trt.float32, shape=(1, 1, 3, 5))
layer = network.add_padding_nd(in1, pre_padding=(-1, 3), post_padding=(3, -2))
network.mark_output(layer.get_output(0))

inputs[in1.name] = np.array(
    [[[[-3.0, -2.0, -1.0, 10.0, -25.0], [-4.0, -9.0, -1.0, 10.0, -25.0], [0.0, 1.0, 2.0, -2.0, -1.0]]]]
)

outputs[layer.get_output(0).name] = layer.get_output(0).shape
expected[layer.get_output(0).name] = np.array(
    [
        [
            [
                [0.0, 0.0, 0.0, -4.0, -9.0, -1.0],
                [0.0, 0.0, 0.0, 0.0, 1.0, 2.0],
                [0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
                [0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
                [0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
            ]
        ]
    ]
)

C++ API

For more information about the C++ IPaddingLayer operator, refer to the C++ IPaddingLayer documentation.

Python API

For more information about the Python IPaddingLayer operator, refer to the Python IPaddingLayer documentation.