Applies a multi-layer gated recurrent unit (GRU) RNN to an input sequence.
Source:R/nn-rnn.R
nn_gru.Rd
For each element in the input sequence, each layer computes the following function:
Usage
nn_gru(
input_size,
hidden_size,
num_layers = 1,
bias = TRUE,
batch_first = FALSE,
dropout = 0,
bidirectional = FALSE,
...
)
Arguments
- input_size
The number of expected features in the input
x
The number of features in the hidden state
h
- num_layers
Number of recurrent layers. E.g., setting
num_layers=2
would mean stacking two GRUs together to form astacked GRU
, with the second GRU taking in outputs of the first GRU and computing the final results. Default: 1- bias
If
FALSE
, then the layer does not use bias weightsb_ih
andb_hh
. Default:TRUE
- batch_first
If
TRUE
, then the input and output tensors are provided as (batch, seq, feature). Default:FALSE
- dropout
If non-zero, introduces a
Dropout
layer on the outputs of each GRU layer except the last layer, with dropout probability equal todropout
. Default: 0- bidirectional
If
TRUE
, becomes a bidirectional GRU. Default:FALSE
- ...
currently unused.
Details
where t
, t
, t-1
or the initial hidden state at time 0
, and
Inputs
Inputs: input, h_0
input of shape
(seq_len, batch, input_size)
: tensor containing the features of the input sequence. The input can also be a packed variable length sequence. Seenn_utils_rnn_pack_padded_sequence()
for details.h_0 of shape
(num_layers * num_directions, batch, hidden_size)
: tensor containing the initial hidden state for each element in the batch. Defaults to zero if not provided.
Outputs
Outputs: output, h_n
output of shape
(seq_len, batch, num_directions * hidden_size)
: tensor containing the output features h_t from the last layer of the GRU, for each t. If aPackedSequence
has been given as the input, the output will also be a packed sequence. For the unpacked case, the directions can be separated usingoutput$view(c(seq_len, batch, num_directions, hidden_size))
, with forward and backward being direction0
and1
respectively. Similarly, the directions can be separated in the packed case.h_n of shape
(num_layers * num_directions, batch, hidden_size)
: tensor containing the hidden state fort = seq_len
Like output, the layers can be separated usingh_n$view(num_layers, num_directions, batch, hidden_size)
.
Attributes
weight_ih_l[k]
: the learnable input-hidden weights of the layer (W_ir|W_iz|W_in), of shape(3*hidden_size x input_size)
weight_hh_l[k]
: the learnable hidden-hidden weights of the layer (W_hr|W_hz|W_hn), of shape(3*hidden_size x hidden_size)
bias_ih_l[k]
: the learnable input-hidden bias of the layer (b_ir|b_iz|b_in), of shape(3*hidden_size)
bias_hh_l[k]
: the learnable hidden-hidden bias of the layer (b_hr|b_hz|b_hn), of shape(3*hidden_size)
Examples
if (torch_is_installed()) {
rnn <- nn_gru(10, 20, 2)
input <- torch_randn(5, 3, 10)
h0 <- torch_randn(2, 3, 20)
output <- rnn(input, h0)
}