docstr: Parameters
  ----------
  F: mx.symbol or mx.ndarray
      Gluon function space
  past_target: Tensor
       shape (batch_size, encoder_length, 1)
  feat_static_cat
      shape (batch_size, num_feat_static_cat)
  past_feat_dynamic
      shape (batch_size, encoder_length, num_past_feat_dynamic)
  future_feat_dynamic
      shape (batch_size, num_forking, decoder_length, num_feat_dynamic)
  past_observed_values: Tensor
      shape (batch_size, encoder_length, 1)
  
  Returns
  -------
  prediction tensor with shape (num_test_ts, num_quantiles,
  prediction_length)
docstr_tok: ["Parameters","--","--","--","--","--","F",":","mx.symbol","or","mx.ndarray","Gluon","function","space","past_target",":","Tensor","shape","(","batch_size",",","encoder_length",",","1",")","feat_static_cat","shape","(","batch_size",",","num_feat_static_cat",")","past_feat_dynamic","shape","(","batch_size",",","encoder_length",",","num_past_feat_dynamic",")","future_feat_dynamic","shape","(","batch_size",",","num_forking",",","decoder_length",",","num_feat_dynamic",")","past_observed_values",":","Tensor","shape","(","batch_size",",","encoder_length",",","1",")","Returns","--","--","--","-","prediction","tensor","with","shape","(","num_test_ts",",","num_quantiles",",","prediction_length",")"]
code: def hybrid_forward(
      self,
      F,
      past_target: Tensor,
      past_feat_dynamic: Tensor,
      future_feat_dynamic: Tensor,
      feat_static_cat: Tensor,
      past_observed_values: Tensor,
  ) -> Tuple[Tuple[Tensor, ...], Tensor, Tensor]:
      """
      Parameters
      ----------
      F: mx.symbol or mx.ndarray
          Gluon function space
      past_target: Tensor
           shape (batch_size, encoder_length, 1)
      feat_static_cat
          shape (batch_size, num_feat_static_cat)
      past_feat_dynamic
          shape (batch_size, encoder_length, num_past_feat_dynamic)
      future_feat_dynamic
          shape (batch_size, num_forking, decoder_length, num_feat_dynamic)
      past_observed_values: Tensor
          shape (batch_size, encoder_length, 1)
  
      Returns
      -------
      prediction tensor with shape (num_test_ts, num_quantiles,
      prediction_length)
      """
  
      # shape:
      # (batch_size, num_forking, decoder_length, decoder_mlp_dim_seq[0])
      dec_output, _ = self.get_decoder_network_output(
          F,
          past_target,
          past_feat_dynamic,
          future_feat_dynamic,
          feat_static_cat,
          past_observed_values,
      )
  
      # We only care about the output of the decoder for the last time step
      # shape: (batch_size = num_test_ts, decoder_length = prediction_length,
      # num_quantiles)
      fcst_output = F.squeeze(
          self.quantile_proj(
              F.slice_axis(dec_output, axis=1, begin=-1, end=None)
          ),
          axis=1,
      )
  
      # shape: (num_test_ts, prediction_length, num_quantiles)
      return (fcst_output,), None, None
  
imports: from typing import List, Optional, Tuple, Type
  import numpy
  from mxnet import gluon
  from gluonts.core.component import validated
  from gluonts.mx import Tensor
  from gluonts.mx.block.decoder import Seq2SeqDecoder
  from gluonts.mx.block.enc2dec import Seq2SeqEnc2Dec
  from gluonts.mx.block.encoder import Seq2SeqEncoder
  from gluonts.mx.block.feature import FeatureEmbedder
  from gluonts.mx.block.quantile_output import QuantileOutput
  from gluonts.mx.block.scaler import MeanScaler, NOPScaler
  from gluonts.mx.distribution import DistributionOutput
  from gluonts.mx.util import weighted_average
label_desc: Use image node_id 1 for calling the ForkingSeq2SeqPredictionNetwork obj's underlying member method code with example usage: obj.hybrid_forward(F, past_target, past_feat_dynamic, future_feat_dynamic, feat_static_cat, past_observed_values) and returns: fcst_output,  None,  None