class_docstr: A model arch similar to FullyConnectedActor, except that the last layer
  represents the parameters of a multi-dimensional Gaussian distribution.
  The action to return is sampled from the Gaussian distribution.
docstr: Compute log probability from normal distribution the same way as
  torch.distributions.normal.Normal, which is:
  
  ```
  -((value - loc) ** 2) / (2 * var) - log_scale - math.log(math.sqrt(2 * math.pi))
  ```
  
  In the context of this class, `value = loc + r * scale`. Therefore, this
  function only takes `r` & `scale`; it can be reduced to below.
  
  The primary reason we don't use Normal class is that it currently
  cannot be exported through ONNX.
code: def _normal_log_prob(self, r, scale_log):
      """
      Compute log probability from normal distribution the same way as
      torch.distributions.normal.Normal, which is:
  
      ```
      -((value - loc) ** 2) / (2 * var) - log_scale - math.log(math.sqrt(2 * math.pi))
      ```
  
      In the context of this class, `value = loc + r * scale`. Therefore, this
      function only takes `r` & `scale`; it can be reduced to below.
  
      The primary reason we don't use Normal class is that it currently
      cannot be exported through ONNX.
      """
      return -(r**2) / 2 - scale_log - self.const
  
imports: import math
  from typing import List, Optional
  import torch
  from reagent.core import types
  from reagent.core.parameters import CONTINUOUS_TRAINING_ACTION_RANGE
  from reagent.core.tensorboardX import SummaryWriterContext
  from reagent.models.base import ModelBase
  from reagent.models.fully_connected_network import FullyConnectedNetwork
  from torch.distributions import Dirichlet
  from torch.distributions.normal import Normal
label_desc: Use image node_id 3 for calling the GaussianFullyConnectedActor obj's underlying member method code with example usage: obj._normal_log_prob(r, scale_log) and returns: unknown