Spec-Zone.ru › PyTorch 1

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/1.13/generated/torch.nn.utils.rnn.pad_packed_sequence.html

Spec-Zone.ru

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