class_docstr: A world model used for simulation. Underlying is an RNN with fixed
  parameters. Given a sequence of actions and states, it outputs the next
  state's mixture means and reward.
code: def forward(self, actions, cur_states):
      # actions: (SEQ_LEN, BATCH_SIZE, ACTION_SIZE)
      # cur_states: (SEQ_LEN, BATCH_SIZE, FEATURE_SIZE)
      seq_len, batch_size = actions.size(0), actions.size(1)
  
      X = torch.cat([actions, cur_states], dim=-1)
      # X_shape: (1, act_seq_len, lstm_input_dim)
      Y, self.hidden = self.lstm(X, self.hidden)
      gmm_outs = self.gmm_linear(Y)
  
      mus = gmm_outs[:, :, :-1]
      mus = mus.view(
          seq_len, batch_size, self.num_gaussians, self.state_dim
      )
      rewards = gmm_outs[:, :, -1]
  
      return mus, rewards
  
file_path: ReAgent/reagent/test/world_model/simulated_world_model.py
imports: import torch
  import torch.nn
label_desc: Use image node_id 5 for calling the SimulatedWorldModel obj's underlying member method code with example usage: obj.forward(actions, cur_states) and returns: mus,  rewards