下载
中文
注册

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向量。