code: def __init__(
      self,
      bins_lower_bound: float,
      bins_upper_bound: float,
      num_bins: int,
  ) -> None:
      super().__init__(self)
  
      assert (
          isinstance(num_bins, int) and num_bins > 1
      ), "num_bins should be an integer and greater than 1"
      assert bins_lower_bound < bins_upper_bound, (
          f"bins_lower_bound {bins_lower_bound} needs to less than "
          f"bins_upper_bound {bins_upper_bound}"
      )
  
      self.num_bins = num_bins
      self.bins_lower_bound = bins_lower_bound
      self.bins_upper_bound = bins_upper_bound
  
      self.args_dim = cast(
          Dict[str, int],
          {"logits": num_bins},
      )
  
imports: from typing import Dict, Optional, Tuple, cast
  import torch
  import torch.nn.functional
  from torch.distributions import Distribution, constraints
  from gluonts.core.component import validated
  from .distribution_output import DistributionOutput
label_desc: Use image node_id 1 to create a new BinnedUniformsOutput object from inherited base classes: DistributionOutput with example: obj = BinnedUniformsOutput(bins_lower_bound, bins_upper_bound, num_bins)