Outputs: h'
      * h' : tensor containing the next hidden state for each
        element in the batch
Shape:
      * input: (N, H_{in}) or (H_{in}) tensor containing input
        features where H_{in} = input_size.
  * hidden: (N, H_{out}) or (H_{out}) tensor containing the
    initial hidden state where H_{out} = *hidden_size*. Defaults
    to zero if not provided.

  * output: (N, H_{out}) or (H_{out}) tensor containing the next
    hidden state.

Variables:
      * weight_ih (torch.Tensor) -- the learnable input-hidden
        weights, of shape (3hidden_size, input_size)*
  * **weight_hh** (*torch.Tensor*) -- the learnable hidden-hidden
    weights, of shape *(3*hidden_size, hidden_size)*

  * **bias_ih** -- the learnable input-hidden bias, of shape
    *(3*hidden_size)*

  * **bias_hh** -- the learnable hidden-hidden bias, of shape
    *(3*hidden_size)*

Note:
 All the weights and biases are initialized from
