class_docstr: Dictionary probability distribution.
  
  The respective functions either return
      - the per key distribution properties or
      - aggregate the properties across the sub-distributions using a reduce_fun such as mean or sum.
  
  :param distribution_dict: dictionary holding sub-probability distributions.
class_docstr_tok: ["Dictionary","probability","distribution",".","The","respective","functions","either","return","-","the","per","key","distribution","properties","or","-","aggregate","the","properties","across","the","sub-distributions","using","a","reduce_fun","such","as","mean","or","sum",".",":","param","distribution_dict",":","dictionary","holding","sub-probability","distributions","."]
docstr: implementation of :class:`~maze.distributions.torch_dist.TorchProbabilityDistribution` interface
          
docstr_tok: ["implementation","of",":","class",":","`","~maze.distributions.torch_dist.TorchProbabilityDistribution","`","interface"]
code: def neg_log_prob(
      self, actions: Dict[str, torch.Tensor]
  ) -> Dict[str, torch.Tensor]:
      """implementation of :class:`~maze.distributions.torch_dist.TorchProbabilityDistribution` interface"""
      neg_log_prob = self.log_prob(actions)
      for k, lp in neg_log_prob.items():
          neg_log_prob[k] *= -1
      return neg_log_prob
  
file_path: maze/maze/distributions/dict.py
imports: from typing import Dict
  import torch
  from maze.core.annotations import override
  from maze.distributions.distribution import ProbabilityDistribution
label_desc: Use image node_id 2 for calling the DictProbabilityDistribution obj's underlying member method code with example usage: obj.neg_log_prob(actions) and returns: neg_log_prob