mindspore.ops.DynamicGRUV2
- class mindspore.ops.DynamicGRUV2(*args, **kwargs)[source]
Applies a single-layer gated recurrent unit (GRU) to an input sequence.
where
is the hidden state at time t, is the input at time t, is the hidden state of the layer at time t-1 or the initial hidden state at time 0, and , , are the reset, update, and new gates, respectively. is the sigmoid function, and is the Hadamard product.- Parameters
direction (str) – A string identifying the direction in the op. Default: ‘UNIDIRECTIONAL’. Only ‘UNIDIRECTIONAL’ is currently supported.
cell_depth (int) – An integer identifying the cell depth in the op. Default: 1.
keep_prob (float) – A float identifying the keep prob in the op. Default: 1.0.
cell_clip (float) – A float identifying the cell clip in the op. Default: -1.0.
num_proj (int) – An integer identifying the num proj in the op. Default: 0.
time_major (bool) – A bool identifying the time major in the op. Default: True.
activation (str) – A string identifying the type of activation function in the op. Default: ‘tanh’. Only ‘tanh’ is currently supported.
gate_order (str) – A string identifying the gate order in weight and bias. Default: ‘rzh. ‘zrh’ is another option.
reset_after (bool) – A bool identifying whether to apply reset gate after matrix multiplication. Default: True.
is_training (bool) – A bool identifying is training in the op. Default: True.
- Inputs:
x (Tensor) - Current words. Tensor of shape
. The data type must be float16.weight_input (Tensor) - Input-hidden weight. Tensor of shape
. The data type must be float16.weight_hidden (Tensor) - Hidden-hidden weight. Tensor of shape
. The data type must be float16.bias_input (Tensor) - Input-hidden bias. Tensor of shape
, or None. Has the same data type with input init_h.bias_hidden (Tensor) - Hidden-hidden bias. Tensor of shape
, or None. Has the same data type with input init_h.seq_length (Tensor) - The length of each batch. Tensor of shape
. Only None is currently supported.init_h (Tensor) - Hidden state of initial time. Tensor of shape
. The data type must be float16 or float32.
- Outputs:
y (Tensor) - A Tensor of shape :math: if num_proj > 0 (num_step, batch_size, min(hidden_size, num_proj), if num_proj == 0 (num_step, batch_size, hidden_size). Has the same data type with input bias_type.
output_h (Tensor) - A Tensor of shape
. Has the same data type with input bias_type.update (Tensor) - A Tensor of shape
. Has the same data type with input bias_type.reset (Tensor) - A Tensor of shape
. Has the same data type with input bias_type.new (Tensor) - A Tensor of shape
. Has the same data type with input bias_type.hidden_new (Tensor) - A Tensor of shape
. Has the same data type with input bias_type.
A note about the bias_type:
If bias_input and bias_hidden both are None, bias_type is date type of init_h.
If bias_input is not None, bias_type is the date type of bias_input.
If bias_input is None and bias_hidden is not None, `bias_type is the date type of bias_hidden.
- Raises
TypeError – If direction, activation or gate_order is not a str.
TypeError – If cell_depth or num_proj is not an int.
TypeError – If keep_prob or cell_clip is not a float.
TypeError – If time_major, reset_after or is_training is not a bool.
TypeError – If x, weight_input, weight_hidden, bias_input, bias_hidden, seq_length or ini_h is not a Tensor.
TypeError – If dtype of x, weight_input or weight_hidden is not float16.
TypeError – If dtype of init_h is neither float16 nor float32.
- Supported Platforms:
Ascend
Examples
>>> x = Tensor(np.random.rand(2, 8, 64).astype(np.float16)) >>> weight_i = Tensor(np.random.rand(64, 48).astype(np.float16)) >>> weight_h = Tensor(np.random.rand(16, 48).astype(np.float16)) >>> bias_i = Tensor(np.random.rand(48).astype(np.float16)) >>> bias_h = Tensor(np.random.rand(48).astype(np.float16)) >>> init_h = Tensor(np.random.rand(8, 16).astype(np.float16)) >>> dynamic_gru_v2 = ops.DynamicGRUV2() >>> output = dynamic_gru_v2(x, weight_i, weight_h, bias_i, bias_h, None, init_h) >>> print(output[0].shape) (2, 8, 16)