code: def hybrid_forward(
      self,
      F,
      past_target: Tensor,
      past_observed_values: Tensor,
      past_feat_dynamic_real: Tensor,
      past_feat_dynamic_cat: Tensor,
      feat_dynamic_real: Tensor,
      feat_dynamic_cat: Tensor,
      feat_static_real: Tensor,
      feat_static_cat: Tensor,
  ) -> Tuple[Tuple[Tensor, ...], Tensor, Tensor]:
      (
          past_covariates,
          future_covariates,
          static_covariates,
          offset,
          scale,
      ) = self._preprocess(
          F,
          past_target,
          past_observed_values,
          past_feat_dynamic_real,
          past_feat_dynamic_cat,
          feat_dynamic_real,
          feat_dynamic_cat,
          feat_static_real,
          feat_static_cat,
      )
  
      preds = self._forward(
          F,
          past_observed_values,
          past_covariates,
          future_covariates,
          static_covariates,
      )
  
      preds = self._postprocess(F, preds, offset, scale)
      return (preds,), None, None
  
imports: from typing import List, Tuple, Type
  import numpy
  from mxnet.gluon import HybridBlock, nn
  from gluonts.core.component import validated
  from gluonts.mx import Tensor
  from gluonts.mx.block.feature import FeatureEmbedder
  from gluonts.mx.block.quantile_output import QuantileOutput
  from gluonts.mx.util import weighted_average
  from ._layers import GatedResidualNetwork, TemporalFusionDecoder, TemporalFusionEncoder, VariableSelectionNetwork
label_desc: Use image node_id 1 for calling the TemporalFusionTransformerPredictionNetwork obj's underlying member method code with example usage: obj.hybrid_forward(F, past_target, past_observed_values, past_feat_dynamic_real, past_feat_dynamic_cat, feat_dynamic_real, feat_dynamic_cat, feat_static_real, feat_static_cat) and returns: preds,  None,  None