code: def forward(self, input_seq, target_seq=None):
      x, (hidden, cell) = self.lstm_encoder(input_seq)
      # input feature order should have target dimensions in the first
      decoder_input = input_seq[:, -1, : self.output_feature_num]
      decoder_input = decoder_input.unsqueeze(1)
      decoder_output = []
      for i in range(self.future_seq_len):
          decoder_output_step, (hidden, cell) = self.lstm_decoder(
              decoder_input, (hidden, cell)
          )
          out_step = self.fc(decoder_output_step)
          decoder_output.append(out_step)
          if not self.teacher_forcing or target_seq is None:
              # no teaching force
              decoder_input = out_step
          else:
              # with teaching force
              decoder_input = target_seq[:, i : i + 1, :]
      decoder_output = torch.cat(decoder_output, dim=1)
      return decoder_output
  
file_path: analytics-zoo/pyzoo/zoo/chronos/model/Seq2Seq_pytorch.py
imports: import torch
  import torch.nn
  from zoo.orca.automl.model.base_pytorch_model import PytorchBaseModel, PYTORCH_REGRESSION_LOSS_MAP
  import numpy
label_desc: Use image node_id 2 for calling the LSTMSeq2Seq obj's underlying member method code with example usage: obj.forward(input_seq, target_seq) and returns: decoder_output