---
title: DynamicGRUV2构造函数
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/TensorFlowCommercial/latest/migration/tfmigr1/tfmigr1_tfadapi_0078.html
sourcePath: /source/zh/TensorFlowCommercial/900/migration/tfmigr1/tfmigr1_tfadapi_0078.html
indexId: d467aa208b4d41d81f4c6e91f46d6362389965845c3afc7916b8107dba967e5379
---
# DynamicGRUV2构造函数

#### 产品支持情况

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


#### 功能说明

TensorFlow侧使用该接口，支持RNN类网络训练、推理。


#### 函数原型

```
class DynamicGRUV2(_DynamicBasic):
    def __init__(self,
                 hidden_size,
                 dtype,
                 direction=DYNAMIC_RNN_UNIDIRECTION,
                 cell_depth=1,
                 keep_prob=1.0,
                 cell_clip=-1.0,
                 num_proj=0,
                 time_major=True,
                 activation="tanh",
                 gate_order="zrh",
                 reset_after=True,
                 is_training=True)
```


#### 参数说明

| 参数名 | 输入/输出 | 描述 |
| --- | --- | --- |
| hidden\_size | 输入 | GRU模型中隐状态h的维度。 |
| dtype | 输入 | weight、bias初始化的数据类型，注：传入的数据最终会转化成D支持的类型。 |
| direction | 输入 | （可选）目前仅支持DYNAMIC\_RNN\_UNIDIRECTION。 |
| cell\_depth | 输入 | （可选）目前仅支持单层。 |
| keep\_prob | 输入 | （可选）目前不支持dropout。 |
| cell\_clip | 输入 | （可选）目前不支持数值裁剪。 |
| num\_proj | 输入 | （可选）目前不支持投影计算。 |
| time\_major | 输入 | （可选）目前仅支持输入x是【num\_step, batch\_size, embedding】模式。 |
| activation | 输入 | （可选）目前仅支持“tanh”。 |
| gate\_order | 输入 | （可选）表示几个门的顺序，默认为“zrh”，常用的另一个顺序为“rzh”。 |
| reset\_after | 输入 | （可选）默认为TRUE，表示矩阵乘法之后将重置门应用到隐藏状态 。 |
| is\_training | 输入 | （可选）默认是训练模式。 |


#### 返回值

output_y：RNN的输出tensor，shape为【num_step, batch_size, hidden_size】。

output_h：RNN的输出tensor，shape为【num_step, batch_size, hidden_size】。

update：RNN计算的中间结果，用于反向计算使用。

reset：RNN计算的中间结果，用于反向计算使用。

new：RNN计算的中间结果，用于反向计算使用。

hidden_new：RNN计算的中间结果，用于反向计算使用。


#### 使用约束

目前该接口支持的功能有限，具体约束详见参数说明表。


#### 调用示例

```
import tensorflow as tf
from npu_bridge.estimator.npu.npu_dynamic_rnn import DynamicGRUV2
inputs = tf.random.normal(shape=(25, 64, 128))
gru = DynamicGRUV2(hidden_size=16, dtype=tf.float16, is_training=False)
y, output_h, update, reset, new, hidden_new = gru(inputs, seq_length=None, init_h=None)
```
