pad_sequence —— 填充句子到相同长度

torch.nn.utils.rnn.pad_sequence(sequences, batch_first=False, padding_value=0)

用padding_value 填充一系列可变长度的tensor,把它们填充到等长

Example

>>> from torch.nn.utils.rnn import pad_sequence
>>> a = torch.ones(25, 300)
>>> b = torch.ones(22, 300)
>>> c = torch.ones(15, 300)
>>> pad_sequence([a, b, c]).size()
torch.Size([25, 3, 300])
from torch.nn.utils.rnn import pad_sequence
import torch
a=torch.randn(3)
b=torch.randn(5)
c=torch.randn(7)
>>> a
tensor([ 0.7160,  1.2006, -1.8447])
>>> b
tensor([ 0.3941,  0.3839,  0.1166, -0.7221,  1.8661])
>>> c
tensor([-0.6521,  0.0681,  0.6626, -0.3679, -0.6042,  1.6951,  0.4937])
>>> pad_sequence([a,b,c])
tensor([[ 0.7160,  0.3941, -0.6521],
        [ 1.2006,  0.3839,  0.0681],
        [-1.8447,  0.1166,  0.6626],
        [ 0.0000, -0.7221, -0.3679],
        [ 0.0000,  1.8661, -0.6042],
        [ 0.0000,  0.0000,  1.6951],
        [ 0.0000,  0.0000,  0.4937]])
>>> pad_sequence([a,b,c],batch_first=True)
tensor([[ 0.7160,  1.2006, -1.8447,  0.0000,  0.0000,  0.0000,  0.0000],
        [ 0.3941,  0.3839,  0.1166, -0.7221,  1.8661,  0.0000,  0.0000],
        [-0.6521,  0.0681,  0.6626, -0.3679, -0.6042,  1.6951,  0.4937]])

>>> pad_sequence([a,b,c],batch_first=True,padding_value=1)
tensor([[ 0.7160,  1.2006, -1.8447,  1.0000,  1.0000,  1.0000,  1.0000],
        [ 0.3941,  0.3839,  0.1166, -0.7221,  1.8661,  1.0000,  1.0000],
        [-0.6521,  0.0681,  0.6626, -0.3679, -0.6042,  1.6951,  0.4937]])

参考:
pad_sequence

猜你喜欢

转载自blog.csdn.net/m0_37586991/article/details/89467955