docstr: Generates the predicted sample paths.
  
  Parameters
  ----------
  feat_static_cat
      Static categorical features (batch_size, num_feat_static_cat)
  feat_static_real
      Static real-valued features (batch_size, num_feat_static_real)
  past_time_feat
      Past time features (batch_size, history_length, num_features)
  past_target
      Past target values (batch_size, history_length)
  past_observed_values
      Indicator whether or not the values were observed
      (batch_size, history_length)
  future_time_feat
      Future time features (batch_size, prediction_length, num_features)
  num_parallel_samples
      Number of parallel sample paths generated for each time series
  
  Returns
  -------
  sample_paths
      Sample paths (batch_size, num_parallel_samples, prediction_length)
docstr_tok: ["Generates","the","predicted","sample","paths",".","Parameters","--","--","--","--","--","feat_static_cat","Static","categorical","features","(","batch_size",",","num_feat_static_cat",")","feat_static_real","Static","real-valued","features","(","batch_size",",","num_feat_static_real",")","past_time_feat","Past","time","features","(","batch_size",",","history_length",",","num_features",")","past_target","Past","target","values","(","batch_size",",","history_length",")","past_observed_values","Indicator","whether","or","not","the","values","were","observed","(","batch_size",",","history_length",")","future_time_feat","Future","time","features","(","batch_size",",","prediction_length",",","num_features",")","num_parallel_samples","Number","of","parallel","sample","paths","generated","for","each","time","series","Returns","--","--","--","-","sample_paths","Sample","paths","(","batch_size",",","num_parallel_samples",",","prediction_length",")"]
code: def forward(
      self,
      feat_static_cat: torch.Tensor,
      feat_static_real: torch.Tensor,
      past_time_feat: torch.Tensor,
      past_target: torch.Tensor,
      past_observed_values: torch.Tensor,
      future_time_feat: torch.Tensor,
      num_parallel_samples: Optional[int] = None,
  ) -> torch.Tensor:
      """
      Generates the predicted sample paths.
  
      Parameters
      ----------
      feat_static_cat
          Static categorical features (batch_size, num_feat_static_cat)
      feat_static_real
          Static real-valued features (batch_size, num_feat_static_real)
      past_time_feat
          Past time features (batch_size, history_length, num_features)
      past_target
          Past target values (batch_size, history_length)
      past_observed_values
          Indicator whether or not the values were observed
          (batch_size, history_length)
      future_time_feat
          Future time features (batch_size, prediction_length, num_features)
      num_parallel_samples
          Number of parallel sample paths generated for each time series
  
      Returns
      -------
      sample_paths
          Sample paths (batch_size, num_parallel_samples, prediction_length)
      """
  
      if num_parallel_samples is None:
          num_parallel_samples = self.num_parallel_samples
  
      _, scale, hidden_state, _, _ = self.unroll_lagged_rnn(
          feat_static_cat,
          feat_static_real,
          past_time_feat,
          past_target,
          past_observed_values,
          future_time_feat[:, :1],
      )
  
      hidden_state = hidden_state[:, : self.context_length]
  
      distr = self.output_distribution(
          self.picnn, hidden_state, inference=True
      )
  
      unscaled_future_samples = distr.sample(
          sample_shape=(num_parallel_samples,)
      )
  
      return unscaled_future_samples * scale.unsqueeze(-1)
  
file_path: gluonts/src/gluonts/torch/model/mqf2/module.py
imports: from typing import List, Optional
  import torch
  from gluonts.core.component import validated
  from gluonts.torch.model.deepar.module import DeepARModel
  from cpflows.flows import ActNorm
  from cpflows.icnn import PICNN
  from .distribution import MQF2DistributionOutput
  from .icnn_utils import DeepConvexNet, SequentialNet
label_desc: Use image node_id 3 for calling the MQF2MultiHorizonModel obj's underlying member method code with example usage: obj.forward(feat_static_cat, feat_static_real, past_time_feat, past_target, past_observed_values, future_time_feat, num_parallel_samples) and returns: unknown