class_docstr: A general model arch for mapping from state and action to scalar values.
  
  The model arch is often used to implement the critic in actor-critic algorithms.
code: def __init__(
      self,
      state_dim: int,
      action_dim: int,
      sizes: List[int],
      activations: List[str],
      use_batch_norm: bool = False,
      use_layer_norm: bool = False,
      output_dim: int = 1,
      final_activation: str = "linear",  # most of the time "linear" is the right final activation to use!
  ) -> None:
      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)
      )
      self.fc = FullyConnectedNetwork(
          [state_dim + action_dim] + sizes + [output_dim],
          activations + [final_activation],
          use_batch_norm=use_batch_norm,
          use_layer_norm=use_layer_norm,
      )
  
file_path: ReAgent/reagent/models/critic.py
imports: from typing import List
  import torch
  import torch.fx
  from reagent.core import types
  from reagent.models.base import ModelBase
  from reagent.models.fully_connected_network import FullyConnectedNetwork
label_desc: Use image node_id 1 to create a new FullyConnectedCritic object from inherited base classes: ModelBase with example: obj = FullyConnectedCritic(state_dim, action_dim, sizes, activations, use_batch_norm, use_layer_norm, output_dim, final_activation)