the \text{k}^{th} layer (W_ir|W_iz|W_in), of shape
        (3hidden_size, input_size) for k = 0. Otherwise, the
        shape is (3hidden_size, num_directions * hidden_size)
  * **weight_hh_l[k]** -- the learnable hidden-hidden weights of
    the \text{k}^{th} layer (W_hr|W_hz|W_hn), of shape
    *(3*hidden_size, hidden_size)*

  * **bias_ih_l[k]** -- the learnable input-hidden bias of the
    \text{k}^{th} layer (b_ir|b_iz|b_in), of shape
    *(3*hidden_size)*

  * **bias_hh_l[k]** -- the learnable hidden-hidden bias of the
    \text{k}^{th} layer (b_hr|b_hz|b_hn), of shape
    *(3*hidden_size)*

Note:
 All the weights and biases are initialized from
 \mathcal{U}(-\sqrt{k}, \sqrt{k}) where k =
 \frac{1}{\text{hidden\_size}}

Note:
 For bidirectional GRUs, forward and backward are directions 0 and
 1 respectively. Example of splitting the output layers when
 "batch_first=False": "output.view(seq_len, batch, num_directions,
