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: Args:
      use_l2_normalization: if True, divides action by l2 norm.
code: def __init__(
      self,
      state_dim: int,
      action_dim: int,
      sizes: List[int],
      activations: List[str],
      scale: float = 0.05,
      use_batch_norm: bool = False,
      use_layer_norm: bool = False,
      use_l2_normalization: bool = False,
  ) -> None:
      """
      Args:
          use_l2_normalization: if True, divides action by l2 norm.
      """
      super().__init__()
      assert state_dim > 0, "state_dim must be > 0, got {}".format(
          state_dim
      )
      assert action_dim > 0, "action_dim must be > 0, got {}".format(
          action_dim
      )
      self.state_dim = state_dim
      self.action_dim = action_dim
      assert len(sizes) == len(
          activations
      ), "The numbers of sizes and activations must match; got {} vs {}".format(
          len(sizes), len(activations)
      )
      # The last layer is mean & scale for reparameterization trick
      self.fc = FullyConnectedNetwork(
          [state_dim] + sizes + [action_dim * 2],
          activations + ["linear"],
          use_batch_norm=use_batch_norm,
          use_layer_norm=use_layer_norm,
      )
      self.use_layer_norm = use_layer_norm
      if self.use_layer_norm:
          self.loc_layer_norm = torch.nn.LayerNorm(action_dim)
          self.scale_layer_norm = torch.nn.LayerNorm(action_dim)
  
      self.use_l2_normalization = use_l2_normalization
  
      # used to calculate log-prob
      self.const = math.log(math.sqrt(2 * math.pi))
      self.eps = 1e-6
  
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 1 to create a new GaussianFullyConnectedActor object from inherited base classes: ModelBase with example: obj = GaussianFullyConnectedActor(state_dim, action_dim, sizes, activations, scale, use_batch_norm, use_layer_norm, use_l2_normalization)