Hello everyone!
I can’t clearly understand how packed sequence works.  If we look at the example from the docs:

a = torch.tensor([1, 2, 3])
b = torch.tensor([1, 2])
c = torch.tensor([1])
torch.nn.utils.rnn.pack_sequence([a, b, c])

it will give us something like that:

PackedSequence(data=tensor([ 1,  1,  1,  2,  2,  3]), batch_sizes=tensor([ 3,  2,  1]))

But when I change only one tensor, it gives completely different results:

a = torch.zeros(5)
b = torch.tensor([1, 2])
c = torch.tensor([1])
torch.nn.utils.rnn.pack_sequence([a, b, c])


PackedSequence(data=tensor([ 0.,  1.,  1.,  0.,  2.,  0.,  0.,  0.]), batch_sizes=tensor([ 3,  2,  1,  1,  1]))

What’s going on? Why we obtain batch_sizes with 5 elements when we gave only 3 tensors?