我正在尝试填充LSTM mini批处理的张量序列,其中序列中的每个时间步都包含一个子张量列表(表示单个时间步中的多个特征)。你知道吗
例如,序列1有3个时间步,每个时间步中有2个特性。下面的例子是:
序列1=[[1,2],[2,2],[3,3],[3,2],[3,2]]
序列2=[[4,2],[5,1],[4,4]]
序列3=[[6,9]]
我运行pytorch的pad\u sequence函数(这也适用于pack\u sequence),如下所示:
import torch
import torch.nn.utils.rnn as rnn_utils
a = torch.tensor([[1,2],[2,2],[3,3],[3,2],[3,2]])
b = torch.tensor([[4,2],[5,1],[4,4]])
c = torch.tensor([[6,9]])
result = rnn_utils.pad_sequence([a, b, c])
我的预期产出如下:
序列1=[[1,2],[2,2],[3,3],[3,2],[3,2]]
序列2=[[4,2],[5,1],[4,4],[0,0],[0,0]]
序列3=[[6,9],[0,0],[0,0],[0,0],[0,0]]
但是,我得到的结果如下:
tensor([[[1, 2],
[4, 2],
[6, 9]],
[[2, 2],
[5, 1],
[0, 0]],
[[3, 3],
[4, 4],
[0, 0]],
[[3, 2],
[0, 0],
[0, 0]],
[[3, 2],
[0, 0],
[0, 0]]])
填充物似乎是垂直的,而不是我所期望的。我怎样才能得到我需要的正确的填充物呢?你知道吗
简单的改变
至
默认情况下,
batch_first
为False。如果为真,输出将在B x T x *
中,否则在T x B x *
中,其中B
是批大小。它等于sequences
中的元素数T
是最长序列的长度,并且*
是任意数量的尾随维度,包括无。你知道吗输出:
相关问题 更多 >
编程相关推荐