PadOperation
功能
对于输入input_ids,取出每个batch最后一个有效token的embedding向量。
使用场景
经过pad(末尾填充0后)之后,input_ids中有batch个token id 序列,输出时,从每个batch中拿出最后一个token的词向量,并且拼接在一起。
使用示例:
tmp_out [token_num,hidden_dim] 为[37,16]
padding_offset[1,token_num] 为[37]
seqlen[batch,1] 为[[8],[13],[16]]
则input_ids[3,16]为:
[[1,2,3,4,5,6,7,8,0,0,0,0,0,0,0,0],[1,2,3,4,5,6,7,8,9,10,11,12,13,0,0,0],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]]
max_seq_len=16
则output[3,16]为:
[[1,2,3,4,5,6,7,8,0,0,0,0,0,0,0,0],[1,2,3,4,5,6,7,8,9,10,11,12,13,0,0,0],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]]
应用场景:
在自然语言处理(NLP)中,输入的句子长度通常不同。为了让它们在一个 batch 中处理,我们需要将它们填充(pad)到相同的长度。填充的方式通常是在句子的末尾添加零(0),直到所有句子长度相同。
定义
struct PadParam {};
输入
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
tmp_out |
[token_num, hidden_dim] |
float16 |
ND |
每一个token对应的embedding向量。 |
padding_offset |
[1, token_num] |
int32 |
ND |
由seq_len和cum_offsets_out组合计算得到。 |
seq_len |
[batch, 1] |
int32 |
ND |
每个batch中的有效token数量。 |
input_ids |
[batch, max_seq_len] |
int64 |
ND |
经过pad(末尾填充0)之后,batch个token id序列。 |
输出
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
output |
[batch, hidden_dim] |
float16 |
ND |
取出的每个batch最后一个有效token的embedding向量。 |