В вашем коде есть несколько ошибок.
- Размер ввода должен быть 1
- LSTM принимает вектор на каждом временном шаге, вы передаете скаляры и, следовательно, ошибку измерения.
Ниже код должен решить проблему. Я сделал каждый вход массивом (1,) и изменил размер ввода на 1.
import torch
import torch.nn.utils.rnn as rnn_utils
a = torch.Tensor([[1], [2], [3]])
b = torch.Tensor([[4], [5]])
c = torch.Tensor([[6]])
seq = rnn_utils.pack_sequence([a, b, c])
lstm = torch.nn.LSTM(input_size=1, hidden_size=3)
lstm(seq)
Упакованная последовательность может быть многомерной, и она зависит от данных на каждом временном шаге. Например, в этом случае seq
будет
PackedSequence(data=tensor([[1.],
[4.],
[6.],
[2.],
[5.],
[3.]]), batch_sizes=tensor([3, 2, 1]))