unpad_sequence

paddle.nn.utils. unpad_sequence ( padded_sequences: Tensor, lengths: Tensor, batch_first: bool = False ) → list[Tensor] [source]

Unpad a padded Tensor into a list of variable length Tensors.

unpad_sequence unstacks a padded Tensor into a list of variable length Tensors.

Parameters
  • padded_sequences (Tensor) – padded sequences.

  • lengths (Tensor) – length of original (unpadded) sequences.

  • batch_first (bool, optional) – whether batch dimension is first or not. Default: False.

Returns

a list of Tensor objects with original lengths.

Return type

list[Tensor]

Examples

>>> import paddle
>>> a = paddle.ones([25, 300])
>>> b = paddle.ones([22, 300])
>>> c = paddle.ones([15, 300])
>>> sequences = [a, b, c]
>>> padded = paddle.nn.utils.pad_sequence(sequences)
>>> lengths = paddle.to_tensor([v.shape[0] for v in sequences])
>>> unpadded = paddle.nn.utils.unpad_sequence(padded, lengths)
>>> paddle.allclose(sequences[0], unpadded[0]).item()
True
>>> paddle.allclose(sequences[1], unpadded[1]).item()
True
>>> paddle.allclose(sequences[2], unpadded[2]).item()
True