UnpadWithHiddenStateOperation
功能
UnpadWithHiddenState的作用是将填充后的序列恢复成原始的变长序列。
定义
struct UnpadWithHiddenStateParam { std::vector<int32_t> qSeqLen; int32_t maxSeqLen = 4096; };
参数列表
成员名称 |
类型 |
默认值 |
描述 |
---|---|---|---|
qSeqLen |
std::vector<int32_t> |
- |
每个batch实际SeqLen的值,元素个数为batchSize。batchSize的值最大不超过32。 |
maxSeqLen |
int32_t |
- |
最大SeqLen值。取值不超过4096。 |
输入
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
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]