yllgl
#1
I have a packed data and each sequences’ length.

Example:

```
data = torch.tensor([4, 1, 3, 5, 2, 6])
lengths = torch.tensor([2,1,3])
```

I want to create a pad 2-D (batch_size,max_lengths) matrix like:

```
output = torch.tensor([[4,1,0], #length=2
[3,0,0],#length=1
[5,2,6])#length=3
```

And due to my training purpose, this operation should be able to track backward gradient if `data.requires_grad=True`

.

ptrblck
#2
`pad_sequence`

should work:

```
data = torch.tensor([4, 1, 3, 5, 2, 6], dtype=torch.float32, requires_grad=True)
lengths = torch.tensor([2,1,3])
x = data.split(torch.tensor_split(lengths, len(lengths)))
out = torch.nn.utils.rnn.pad_sequence(x, batch_first=True)
print(out)
# tensor([[4., 1., 0.],
# [3., 0., 0.],
# [5., 2., 6.]], grad_fn=<CopySlices>)
out.mean().backward()
print(data.grad)
# tensor([0.1111, 0.1111, 0.1111, 0.1111, 0.1111, 0.1111])
```