---
title: GRU
description: "计算单层GRU，通常通过一些自定义实现来支持此运算符。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/aolapi/atlasoxol_09_0072.html
sourcePath: /source/zh/canncommercial/900/API/aolapi/atlasoxol_09_0072.html
indexId: d97081a8b3d746bfa714d7226a2dbe12b0417f01052c767bedc70b457f920cb263
---
# GRU

#### 功能

计算单层GRU，通常通过一些自定义实现来支持此运算符。


#### 输入

- x：输入Tensor，将输入序列打包成一个三维张量，shape是[seq_length, batch_size, input_size]，数据类型：float16。
- w：输入Tensor，gate的权重，（如果是双向的）沿维度0方向串联，shape是W[zrh] WB[zrh] [num_directions, 3*hidden_size, input_size]，数据类型：float16。
- r：输入Tensor，递归权重Tensor，（如果是双向的）沿维度0方向串联，shape是R[zrh] RB[zrh] [num_directions, 3*hidden_size, hidden_size]，数据类型：float16。
- b（可选）：输入Tensor，gate的偏移Tensor，（如果是双向的）沿维度0方向串联，shape为[Wb[zrh], Rb[zrh]] [WBb[zrh], RBb[zrh]] [num_directions, 6*hidden_size]，如未选中，默认为0，数据类型支持float16。
- sequence_lens（可选）：输入Tensor，用于指定某批次中序列的长度，shape是seq_length[batch_size]，如未选中假定所有序列都有length，数据类型：int32。
- initial_h（可选）：输入Tensor，hidden的初始值，shape是[num_directions, batch_size, hidden_size]，如未选中假定为0，数据类型：float16。


#### 属性

- activation_alpha：数据类型支持floats，激活函数使用的可选缩放值。这些值按激活函数的顺序使用，例如LSTM中的(f, g, h)。默认值与相应的ONNX一样，而对于LeakyRelu，默认alpha为0.01。
- activation_beta：数据类型支持floats，激活函数使用的可选缩放值。这些值按激活函数的顺序使用，例如LSTM中的(f, g, h)。默认值与相应的ONNX一样。
- activations：数据类型支持strings，用于更新、重置和隐藏gates（如果是双向）激活函数列表。激活函数必须是上述指定的激活函数之一。
- clip：数据类型支持float，单元clip阈值，将Tensor元素限制在具体单位内。
- direction：数据类型支持string，默认是forward，指定RNN是正向、反向还是双向。必须是正向（默认）、反向或双向之一。
- hidden_size：数据类型支持int，隐藏层神经元数量。
- linear_before_reset：数据类型支持int ，默认为0，计算隐藏gates的输出时，在乘以复位门的输出之前应用线性变换。


#### 输出

- y：输出Tensor，连接了 hidden 的所有中间输出值，shape是[seq_length, num_directions, batch_size, hidden_size]，数据类型：float16。
- y_h：输出Tensor，隐藏的最后一个输出值，shape是[num_directions, batch_size, hidden_size]，数据类型：float16。


#### 约束与限制

无。


#### 支持的ONNX版本

Opset v8/v9/v10/v11/v12/v13/v14/v15/v16/v17/v18
