---
title: PadWithHiddenStateOperation
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_01_0091.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_01_0091.html
indexId: 04cc7842c66d48e605751f0e2db1bcccdfec347c65db7c30dd6b3cdb3b1206ac64
---
# PadWithHiddenStateOperation

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | x |
| Atlas A3 推理系列产品 / Atlas A3 训练系列产品 | x |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 训练系列产品 | x |
| Atlas 推理系列产品 | x |
| Atlas 200I/500 A2 推理产品 | x |


#### 功能说明

PadWithHiddenState是带隐藏层的pad，这个算子的主要作用是将变长的序列填充为固定长度，便于批处理和模型训练。


#### 定义

```
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一致。 |
