class_docstr: Categorical distribution with noise for MultiDiscrete action spaces.
docstr: Args:
      logits: A float32 tensor with shape [BATCH_SIZE, LEN_MultiDiscrete, NUM_ACTIONS] of unnormalized policy logits
      low: lower bounds of sample action
      high: Upper bounds of action
docstr_tok: ["Args",":","logits",":","A","float32","tensor","with","shape","[","BATCH_SIZE",",","LEN_MultiDiscrete",",","NUM_ACTIONS","]","of","unnormalized","policy","logits","low",":","lower","bounds","of","sample","action","high",":","Upper","bounds","of","action"]
code: def __init__(self, logits, low, high):
      """
      Args:
          logits: A float32 tensor with shape [BATCH_SIZE, LEN_MultiDiscrete, NUM_ACTIONS] of unnormalized policy logits
          low: lower bounds of sample action
          high: Upper bounds of action
      """
      self.logits = logits
      self.low = low
      self.high = high
      self.categoricals = list(
          map(
              SoftCategoricalDistribution,
              layers.split(
                  input=logits,
                  num_or_sections=list(high - low + 1),
                  dim=len(logits.shape) - 1,
              ),
          )
      )
  
imports: from parl.core.fluid import layers
label_desc: Use image node_id 1 to create a new SoftMultiCategoricalDistribution object from inherited base classes: PolicyDistribution with example: obj = SoftMultiCategoricalDistribution(logits, low, high)