class_docstr: A `Forecast` object that uses a GluonTS distribution directly. This can for
  instance be used to represent marginal probability distributions for each
  time point -- although joint distributions are also possible, e.g. when
  using MultiVariateGaussian).
  
  Parameters
  ----------
  distribution
      Distribution object. This should represent the entire prediction
      length, i.e., if we draw `num_samples` samples from the distribution,
      the sample shape should be
  
          samples = trans_dist.sample(num_samples)
          samples.shape -> (num_samples, prediction_length)
  
  start_date
      start of the forecast
  info
      additional information that the forecaster may provide e.g. estimated
      parameters, number of iterations ran etc.
code: def __init__(
      self,
      distribution: Distribution,
      start_date: pd.Period,
      item_id: Optional[str] = None,
      info: Optional[Dict] = None,
  ) -> None:
      self.distribution = distribution
      self.shape = (
          self.distribution.batch_shape + self.distribution.event_shape
      )
      self.prediction_length = self.shape[0]
      self.item_id = item_id
      self.info = info
  
      assert isinstance(
          start_date, pd.Period
      ), "start_date should be a pandas Period object"
      self.start_date = start_date
  
      self._mean = None
  
file_path: gluonts/src/gluonts/mx/model/forecast.py
imports: from typing import Dict, List, Optional, Union
  import mxnet
  import numpy
  import pandas
  from gluonts.core.component import validated
  from gluonts.model.forecast import Forecast, Quantile, QuantileForecast, SampleForecast
  from gluonts.mx.distribution import Distribution
label_desc: Use image node_id 1 to create a new DistributionForecast object from inherited base classes: Forecast with example: obj = DistributionForecast(distribution, start_date, item_id, info)