torch.nn.utils.rnn.pack_padded_sequence#
- torch.nn.utils.rnn.pack_padded_sequence(input, lengths, batch_first=False, enforce_sorted=True)[源码]#
将包含可变长度填充序列的 Tensor 打包。
input
的形状可以是T x B x *
(如果batch_first
为False
) 或B x T x *
(如果batch_first
为True
),其中T
是最长序列的长度,B
是批次大小,而*
是任意数量的维度(包括 0)。对于未排序的序列,请使用 enforce_sorted = False。如果
enforce_sorted
为True
,序列应该按长度递减排序,即input[:,0]
应该是最长序列,input[:,B-1]
应该是最短序列。enforce_sorted = True 仅对 ONNX 导出是必需的。它是
pad_packed_sequence()
的逆向操作,因此可以使用pad_packed_sequence()
来恢复PackedSequence
中打包的底层张量。注意
此函数接受任何至少有两个维度的输入。您可以将其应用于打包标签,并使用 RNN 的输出来直接计算损失。可以通过访问
PackedSequence
对象的.data
属性来检索张量。- 参数
- 返回类型
警告
如果
input
张量的维度大于length
中对应值,则该维度将被截断。- 返回
一个
PackedSequence
对象- 返回类型