UnpadWithHiddenStateOperation
产品支持情况
产品  | 
是否支持  | 
|---|---|
√  | 
|
√  | 
|
x  | 
|
x  | 
|
x  | 
功能
UnpadWithHiddenState的作用是将填充后的序列恢复成原始的变长序列。
定义
1 2 3 4 5  | struct UnpadWithHiddenStateParam { std::vector<int32_t> qSeqLen; int32_t maxSeqLen = 4096; uint8_t rsv[12] = {0}; };  | 
参数列表
成员名称  | 
类型  | 
默认值  | 
描述  | 
|---|---|---|---|
qSeqLen  | 
std::vector<int32_t>  | 
-  | 
每个batch实际SeqLen的值,元素个数为batchSize。batchSize的值最大不超过32。  | 
maxSeqLen  | 
int32_t  | 
-  | 
最大SeqLen值。取值不超过4096。  | 
rsv[12]  | 
uint8_t  | 
{0}  | 
预留参数。  | 
输入
参数  | 
维度  | 
数据类型  | 
格式  | 
描述  | 
|---|---|---|---|---|
x  | 
[batchSize, maxSeqLen, hiddenSize]  | 
float16  | 
ND  | 
unpad前,带冗余的tensor,与pad输出shape一致。  | 
输出
参数  | 
维度  | 
数据类型  | 
格式  | 
描述  | 
|---|---|---|---|---|
output  | 
[nTokens, hiddenSize]  | 
float16  | 
ND  | 
unpad后,不带冗余的tensor,与pad输入shape一致。nTokens为qSeqLen数组的元素和。  | 
规格约束
无
接口调用示例
qSeqlen ={2,3,1} //每个batch的实际输入长度
maxSeqlen=4 //qSeqlen中最大的输入长度
x的shape为(3,4,5)//batchSize为3,最大输入长度为4,隐藏层大小为5
x=[ [1,2,3,4,5 6,7,8,9,10 0,0,0,0,0 0,0,0,0,0], [11,12,13,14,15 16,17,18,19,20 21,22,23,24,25 0,0,0,0,0], [26,27,28,29,30 0,0,0,0,0 0,0,0,0,0 0,0,0,0,0]]
output的shape为(6,5) //总tokens数为6 隐藏层大小为5
x=[1,2,3,4,5 6,7,8,9,10 11,12,13,14,15 16,17,18,19,20 21,22,23,24,25 26,27,28,29,30]