class_docstr: A model arch similar to FullyConnectedActor, except that the last layer
  is sampled from a Dirichlet distribution
docstr: AKA the multivariate beta distribution. Used in cases where actor's action
  must sum to 1.
code: def __init__(
      self,
      state_dim,
      action_dim,
      sizes,
      activations,
      use_batch_norm: bool = False,
  ) -> None:
      """
      AKA the multivariate beta distribution. Used in cases where actor's action
      must sum to 1.
      """
      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 gives the concentration of the distribution.
      self.fc = FullyConnectedNetwork(
          [state_dim] + sizes + [action_dim],
          activations + ["linear"],
          use_batch_norm=use_batch_norm,
      )
  
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 DirichletFullyConnectedActor object from inherited base classes: ModelBase with example: obj = DirichletFullyConnectedActor(state_dim, action_dim, sizes, activations, use_batch_norm)