class_docstr: Multi-categorical probability distribution.
  
  The respective functions either return aggregated properties across the sub-distributions
  using a reduce_fun such as mean or sum.
  
  :param logits: The concatenated action selection logits for all sub spaces.
class_docstr_tok: ["Multi-categorical","probability","distribution",".","The","respective","functions","either","return","aggregated","properties","across","the","sub-distributions","using","a","reduce_fun","such","as","mean","or","sum",".",":","param","logits",":","The","concatenated","action","selection","logits","for","all","sub","spaces","."]
code: def __init__(
      self,
      logits: torch.Tensor,
      action_space: spaces.MultiDiscrete,
      temperature: float,
  ):
      # instantiate categorical sub-distributions
      self.sub_distributions = []
      i0 = 0
      for i, n in enumerate(action_space.nvec):
          sub_distribution = CategoricalProbabilityDistribution(
              logits=logits[..., i0 : i0 + n],
              action_space=spaces.Discrete(action_space.nvec[i]),
              temperature=temperature,
          )
          self.sub_distributions.append(sub_distribution)
  
          # shift logits starting index
          i0 += n
  
file_path: maze/maze/distributions/multi_categorical.py
imports: from typing import Sequence
  import torch
  from gym import spaces
  from maze.core.annotations import override
  from maze.distributions.categorical import CategoricalProbabilityDistribution
  from maze.distributions.distribution import ProbabilityDistribution
label_desc: Use image node_id 2 to create a new MultiCategoricalProbabilityDistribution object from inherited base classes: ProbabilityDistribution with example: obj = MultiCategoricalProbabilityDistribution(logits, action_space, temperature)