docstr: Computes a probability distribution for future data given the past, and
  returns the loss associated with the actual future observations.
  
  Parameters
  ----------
  F
  past_target
      Tensor with past observations.
      Shape: (batch_size, context_length, target_dim).
  future_target
      Tensor with future observations.
      Shape: (batch_size, prediction_length, target_dim).
  future_observed_values
      Tensor indicating which values in the target are observed, and
      which ones are imputed instead.
  
  Returns
  -------
  Tensor
      Loss tensor. Shape: (batch_size, ).
docstr_tok: ["Computes","a","probability","distribution","for","future","data","given","the","past",",","and","returns","the","loss","associated","with","the","actual","future","observations",".","Parameters","--","--","--","--","--","F","past_target","Tensor","with","past","observations",".","Shape",":","(","batch_size",",","context_length",",","target_dim",")",".","future_target","Tensor","with","future","observations",".","Shape",":","(","batch_size",",","prediction_length",",","target_dim",")",".","future_observed_values","Tensor","indicating","which","values","in","the","target","are","observed",",","and","which","ones","are","imputed","instead",".","Returns","--","--","--","-","Tensor","Loss","tensor",".","Shape",":","(","batch_size",",",")","."]
code: def hybrid_forward(
      self,
      F,
      past_target: Tensor,
      future_target: Tensor,
      future_observed_values: Tensor,
  ) -> Tensor:
      """
      Computes a probability distribution for future data given the past, and
      returns the loss associated with the actual future observations.
  
      Parameters
      ----------
      F
      past_target
          Tensor with past observations.
          Shape: (batch_size, context_length, target_dim).
      future_target
          Tensor with future observations.
          Shape: (batch_size, prediction_length, target_dim).
      future_observed_values
          Tensor indicating which values in the target are observed, and
          which ones are imputed instead.
  
      Returns
      -------
      Tensor
          Loss tensor. Shape: (batch_size, ).
      """
      distr_args, loc, scale = self.get_distr_args(F, past_target)
      distr = self.distr_output.distribution(
          distr_args, loc=loc, scale=scale
      )
  
      # (batch_size, prediction_length, target_dim)
      loss = distr.loss(future_target)
  
      weighted_loss = weighted_average(
          F=F, x=loss, weights=future_observed_values, axis=1
      )
  
      # (batch_size, )
      return weighted_loss
  
imports: from typing import List, Tuple
  import mxnet
  from gluonts.core.component import validated
  from gluonts.mx import Tensor
  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 SimpleFeedForwardTrainingNetwork obj's underlying member method code with example usage: obj.hybrid_forward(F, past_target, future_target, future_observed_values) and returns: weighted_loss