Я пытаюсь дополнить последовательность тензоров для мини-дозирования LSTM, где каждый временной шаг в последовательности содержит подсписок тензоров (представляющих несколько объектов за один временной шаг).
Например, последовательность 1 будет иметь 3 временных шага, а в каждом временном шаге есть 2 функции. Пример ниже будет:
Последовательность 1 = [[1,2], [2,2], [3,3], [3,2], [3,2]]
Последовательность 2 = [[4,2], [5,1], [4,4]]
Последовательность 3 = [[6,9]]
Я запускаю функцию pad_sequence в pytorch (это касается и pack_sequence), как показано ниже:
import torch
import torch.nn.utils.rnn as rnn_utils
a = torch.tensor([[1,2],[2,2],[3,3],[3,2],[3,2]])
b = torch.tensor([[4,2],[5,1],[4,4]])
c = torch.tensor([[6,9]])
result = rnn_utils.pad_sequence([a, b, c])
Мой ожидаемый результат выглядит следующим образом:
Последовательность 1 = [[1,2], [2,2], [3,3], [3,2], [3,2]]
последовательность 2 = [[4,2], [5,1], [4,4], [0,0], [0,0]]
Последовательность 3 = [[6,9], [0,0], [0,0], [0,0], [0,0]]
Однако вывод, который я получил, выглядит следующим образом:
tensor([[[1, 2],
[4, 2],
[6, 9]],
[[2, 2],
[5, 1],
[0, 0]],
[[3, 3],
[4, 4],
[0, 0]],
[[3, 2],
[0, 0],
[0, 0]],
[[3, 2],
[0, 0],
[0, 0]]])
Кажется, что отступы идут вертикально, а не то, что я ожидаю. Как мне получить правильный отступ, который мне нужен?