做照片书网站,网页设计师课程,wordpress 不同page,二级域名出租1 PACK_PADDED_SEQUENCE
1.0 功能
将填充的序列打包成一个更加紧凑的形式这样RNN、LSTM和GRU等模型可以更高效地处理它们#xff0c;因为它们可以跳过不必要的计算
1.2 基本使用方法
torch.nn.utils.rnn.pack_padded_sequence(input, lengths, batch_firstFalse, enforce_…1 PACK_PADDED_SEQUENCE
1.0 功能
将填充的序列打包成一个更加紧凑的形式这样RNN、LSTM和GRU等模型可以更高效地处理它们因为它们可以跳过不必要的计算
1.2 基本使用方法
torch.nn.utils.rnn.pack_padded_sequence(input, lengths, batch_firstFalse, enforce_sortedTrue)
1.3 参数
input 一个大小为T×B×*的张量 T是最长序列的长度B是批次大小*表示任意数目的维度lengths每个批次元素的序列长度的列表batch_first如果batch_first是True那么期望的输入格式是B x T x *enforce_sorted 如果设置了enforce_sortedTrue序列应该按长度降序排列。这意味着input[:,0]应该是最长的序列input[:,B-1]应该是最短的。 如果enforce_sorted设置为False输入序列将无条件地被排序。 1.4 举例
import torch
from torch.nn.utils.rnn import pack_padded_sequence# 输入序列
input_seq torch.tensor([[6, 8, 9, 0], [5, 7, 0, 0], [1, 0, 0, 0]])# 序列的实际长度
lengths [3, 2, 1]# 使用pack_padded_sequence
packed pack_padded_sequence(input_seq, lengths, batch_firstTrue)packed
#PackedSequence(datatensor([6, 5, 1, 8, 7, 9]), batch_sizestensor([3, 2, 1]), sorted_indicesNone, unsorted_indicesNone)
2 pad_packed_sequence
对一个已打包的序列进行解包这个打包的序列通常是通过pack_padded_sequence函数从一个填充的序列得到的
2.1 基本使用方法
torch.nn.utils.rnn.pad_packed_sequence(sequence, batch_firstFalse, padding_value0.0, total_lengthNone)
2.2 参数说明
sequence要解包的已打包序列batch_first指示输出的维度顺序。如果为True输出将为B x T x *格式否则为T x B x *格式padding_value用于填充的值通常是0total_length可选的。如果指定输出序列将被填充到这个长度
2.3 举例
还是之前的packed
from torch.nn.utils.rnn import pad_packed_sequencepad_packed_sequence(packed)(tensor([[6, 5, 1],[8, 7, 0],[9, 0, 0]]),tensor([3, 2, 1]))
pad_packed_sequence(packed, batch_firstTrue,total_length5)(tensor([[6, 8, 9, 0, 0],[5, 7, 0, 0, 0],[1, 0, 0, 0, 0]]),tensor([3, 2, 1]))