如何将pytorch中张量列表的左侧填充到最大列表的大小

  • 本文关键字:列表 填充 张量 pytorch pytorch
  • 更新时间 :
  • 英文 :


在pytorch中,如果您有张量列表,则可以使用torch.nn.utils.rnn.pad_sequence填充右侧

import torch
'for the collate function, pad the sequences'
f = [
[0,1],
[0, 3, 4],
[4, 3, 2, 4, 3]
]
torch.nn.utils.rnn.pad_sequence(
[torch.tensor(part) for part in f],
batch_first=True
)
tensor([[0, 1, 0, 0, 0],
[0, 3, 4, 0, 0],
[4, 3, 2, 4, 3]])

我该如何垫左侧?所需的解决方案是

tensor([[0, 0, 0, 0, 1],
[0, 0, 0, 3, 4],
[4, 3, 2, 4, 3]])

您可以反转列表、填充和反转张量。你能接受吗?如果是,您可以使用下面的代码。

torch.nn.utils.rnn.pad_sequence([
torch.tensor(i[::-1]) for i in f 
],                                 # reverse the list and create tensors 
batch_first=True)                  # pad
.flip(dims=[1])                    # reverse/flip the padded tensor in first dimension

最新更新