for unbatched input or (D * \text{num_layers}, N, H_{cell})
        containing the initial cell state for each element in the
        input sequence. Defaults to zeros if (h_0, c_0) is not
        provided.
  where:

     \begin{aligned}     N ={} & \text{batch size} \\     L ={} &
     \text{sequence length} \\     D ={} & 2 \text{ if
     bidirectional=True otherwise } 1 \\     H_{in} ={} &
     \text{input\_size} \\     H_{cell} ={} & \text{hidden\_size}
     \\     H_{out} ={} & \text{proj\_size if }
     \text{proj\_size}>0 \text{ otherwise hidden\_size} \\
     \end{aligned}

Outputs: output, (h_n, c_n)
      * output: tensor of shape (L, D * H_{out}) for unbatched
        input, (L, N, D * H_{out}) when "batch_first=False" or (N, L,
        D * H_{out}) when "batch_first=True" containing the output
        features (h_t) from the last layer of the LSTM, for each
        t. If a "torch.nn.utils.rnn.PackedSequence" has been given