Spec-Zone.ru › PyTorch 2

torch.nn.utils.rnn.pad_packed_sequence

torch.nn.utils.rnn.pad_packed_sequence(sequence, batch_first=False, padding_value=0.0, total_length=None) [source]

Заполняет упакованную партию последовательностей переменной длины.

Это обратная операция к pack_padded_sequence().

Данные возвращаемого тензора будут иметь размер T x B x *, где T — длина самой длинной последовательности, а B — размер пакета. Если batch_first равно True, данные будут транспонированы в формат B x T x *.

Пример

>>> from torch.nn.utils.rnn import pack_padded_sequence, pad_packed_sequence
>>> seq = torch.tensor([[1, 2, 0], [3, 0, 0], [4, 5, 6]])
>>> lens = [2, 1, 3]
>>> packed = pack_padded_sequence(seq, lens, batch_first=True, enforce_sorted=False)
>>> packed
PackedSequence(data=tensor([4, 1, 3, 5, 2, 6]), batch_sizes=tensor([3, 2, 1]),
               sorted_indices=tensor([2, 0, 1]), unsorted_indices=tensor([1, 2, 0]))
>>> seq_unpacked, lens_unpacked = pad_packed_sequence(packed, batch_first=True)
>>> seq_unpacked
tensor([[1, 2, 0],
        [3, 0, 0],
        [4, 5, 6]])
>>> lens_unpacked
tensor([2, 1, 3])

Примечание

total_length полезно для реализации схемы pack sequence -> recurrent network -> unpack sequence в Module, обернутом в DataParallel. Подробнее см. этот раздел FAQ.

Параметры
  • sequence (PackedSequence) – пакет для заполнения
  • batch_first (bool, необязательно) – если True, результат будет в формате B x T x *.
  • padding_value (float, необязательно) – значения для заполненных элементов.
  • total_length (int, необязательно) – если не None, результат будет заполнен до длины total_length. Данный метод выбросит ValueError, если total_length меньше максимальной длины последовательности в sequence.
Возвращаемые значения

Кортеж тензоров, содержащий заполненную последовательность и тензор, содержащий список длин каждой последовательности в пакете. Элементы пакета будут переупорядочены в соответствии с порядком, в котором они были переданы в pack_padded_sequence или pack_sequence.

Тип возвращаемого значения

Tuple[Tensor, Tensor]

© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.nn.utils.rnn.pad_packed_sequence.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API