pad_sequence

paddle.nn.utils. pad_sequence ( sequences: list[Tensor], batch_first: bool = False, padding_value: float = 0.0, padding_side: str = 'right' ) → Tensor [source]

Pad a list of variable length Tensors with padding_value.

pad_sequence stacks a list of Tensors along a new dimension, and pads them to equal length. sequences can be a list of sequences with size L x *, where L is the length of the sequence and * is any number of dimensions (including 0). If batch_first is False, the output is of size T x B x *, and B x T x * otherwise, where B is the batch size (the number of elements in sequences), T is the length of the longest sequence.

Note

This function returns a Tensor of size T x B x * or B x T x * where T is the length of the longest sequence. This function assumes trailing dimensions and type of all the Tensors in sequences are same.

Parameters
  • sequences (list[Tensor]) – list of variable length sequences.

  • batch_first (bool, optional) – if True, the output will be in B x T x * format, T x B x * otherwise. Default: False.

  • padding_value (float, optional) – value for padded elements. Default: 0.0.

  • padding_side (str, optional) – the side to pad the sequences on, either 'right' or 'left'. Default: 'right'.

Returns

Tensor of size T x B x * if batch_first is False, or B x T x * otherwise.

Return type

Tensor

Examples

>>> import paddle
>>> a = paddle.ones([25, 300])
>>> b = paddle.ones([22, 300])
>>> c = paddle.ones([15, 300])
>>> padded = paddle.nn.utils.pad_sequence([a, b, c])
>>> print(padded.shape)
paddle.Size([25, 3, 300])
>>> padded = paddle.nn.utils.pad_sequence([a, b, c], batch_first=True)
>>> print(padded.shape)
paddle.Size([3, 25, 300])