code: def hybrid_forward(
      self,
      F,
      ctx_input: Tensor,
      tgt_input: Tensor,
      states: List[Tensor],
  ) -> Tensor:
      ctx_encodings, states = self.encoder_lstm.unroll(
          length=self.context_length,
          inputs=ctx_input,
          begin_state=states,
          merge_outputs=True,
      )
      tgt_encodings, _ = self.decoder_lstm.unroll(
          length=self.prediction_length,
          inputs=tgt_input,
          begin_state=states,
          merge_outputs=True,
      )
      encodings = F.concat(ctx_encodings, tgt_encodings, dim=1)
      skip = F.concat(ctx_input, tgt_input, dim=1)
      if self.add_skip:
          skip = self.skip_proj(skip)
      encodings = self.gate(encodings)
      encodings = self.lnorm(F.broadcast_add(skip, encodings))
      return encodings
  
imports: import math
  from typing import List, Optional, Tuple
  from mxnet import init
  from mxnet.gluon import HybridBlock, nn, rnn
  from gluonts.core.component import validated
  from gluonts.mx import Tensor
label_desc: Use image node_id 2 for calling the TemporalFusionEncoder obj's underlying member method code with example usage: obj.hybrid_forward(F, ctx_input, tgt_input, states) and returns: encodings