PadWithHiddenStateOperation
产品支持情况
产品  | 
是否支持  | 
|---|---|
x  | 
|
√  | 
|
x  | 
|
x  | 
|
x  | 
功能
PadWithHiddenState是带隐藏层的pad,这个算子的主要作用是将变长的序列填充为固定长度,便于批处理和模型训练。
定义
1 2 3 4 5  | struct PadWithHiddenStateParam { std::vector<int32_t> qSeqLen; int32_t maxSeqLen = 4096; uint8_t rsv[12] = {0}; };  | 
参数列表
成员名称  | 
类型  | 
默认值  | 
描述  | 
|---|---|---|---|
qSeqLen  | 
std::vector<int32_t>  | 
-  | 
每个batch的实际输入长度。元素个数为batchSize。batchSize的值最大不超过32。  | 
maxSeqLen  | 
int32_t  | 
4096  | 
qSeqLen中最大输入长度。取值不超过4096。  | 
rsv[12]  | 
uint8_t  | 
{0}  | 
预留参数。  | 
输入
参数  | 
维度  | 
数据类型  | 
格式  | 
描述  | 
|---|---|---|---|---|
x  | 
[nTokens, hiddenSize]  | 
float16  | 
ND  | 
pad前不带冗余的tensor。与unpad输出shape一致。  | 
- 计算公式:

这个公式用于计算一个batch中所有序列的总token数。
 - 示例:
batchSize = 3
qSeqlen = [5, 10, 7]
则nTokens = 5 +10 + 7 =22
 
输出
参数  | 
维度  | 
数据类型  | 
格式  | 
描述  | 
|---|---|---|---|---|
output  | 
[batchSize, maxSeqLen, hiddenSize]  | 
float16  | 
ND  | 
pad后带冗余的tensor。与unpad输入shape一致。  |