class_docstr: This model is a combination of embedding layer, RNN, DNN.
  It can be used for RNNLM.
  
  Arguments
  ---------
  output_neurons : int
      Number of entries in embedding table, also the number of neurons in
      output layer.
  embedding_dim : int
      Size of embedding vectors (default 128).
  activation : torch class
      A class used for constructing the activation layers for DNN.
  dropout : float
      Neuron dropout rate applied to embedding, RNN, and DNN.
  rnn_class : torch class
      The type of RNN to use in RNNLM network (LiGRU, LSTM, GRU, RNN)
  rnn_layers : int
      The number of recurrent layers to include.
  rnn_neurons : int
      Number of neurons in each layer of the RNN.
  rnn_re_init : bool
      Whether to initialize rnn with orthogonal initialization.
  rnn_return_hidden : bool
      Whether to return hidden states (default True).
  dnn_blocks : int
      The number of linear neural blocks to include.
  dnn_neurons : int
      The number of neurons in the linear layers.
  
  Example
  -------
  >>> model = RNNLM(output_neurons=5)
  >>> inputs = torch.Tensor([[1, 2, 3]])
  >>> outputs = model(inputs)
  >>> outputs.shape
  torch.Size([1, 3, 5])
docstr: Processes the input tensor x and returns an output tensor.
docstr_tok: ["Processes","the","input","tensor","x","and","returns","an","output","tensor","."]
code: def forward(self, x, hx=None):
      """Processes the input tensor x and returns an output tensor."""
      x = self.embedding(x)
      x = self.dropout(x)
  
      # If 2d tensor, add a time-axis
      # This is used for inference time
      if len(x.shape) == 2:
          x = x.unsqueeze(dim=1)
          self.reshape = True
  
      x, hidden = self.rnn(x, hx)
      x = self.dnn(x)
      out = self.out(x)
  
      if self.reshape:
          out = out.squeeze(dim=1)
  
      if self.return_hidden:
          return out, hidden
      else:
          return out
  
imports: import torch
  from torch import nn
  import speechbrain
label_desc: Use image node_id 2 for calling the RNNLM obj's underlying member method code with example usage: obj.forward(x, hx) and returns: out,  hidden, out