class_docstr: Non-convolutional value and policy networks for SAC.
code: def setup(self):
      action_dim = functools.reduce(operator.mul, self.action_shape, 1)
  
      # The setting of these initializers were borrowed from the TF-Agents SAC
      # implementation.
      kernel_initializer = jax.nn.initializers.glorot_uniform()
  
      self._critic1 = SACCriticNetwork(
          self.num_layers, self.hidden_units
      )
      self._critic2 = SACCriticNetwork(
          self.num_layers, self.hidden_units
      )
  
      self._actor_layers = [
          nn.Dense(
              features=self.hidden_units, kernel_init=kernel_initializer
          )
          for _ in range(self.num_layers)
      ]
      self._actor_final_layer = nn.Dense(
          features=action_dim * 2, kernel_init=kernel_initializer
      )
  
imports: import functools
  import operator
  from typing import NamedTuple, Optional, Tuple
  from flax import linen
  import gin
  import jax
  from jax import numpy
  import tensorflow
  from tensorflow_probability.substrates import jax
label_desc: Use image node_id 1 for calling the SACNetwork obj's underlying member method code with example usage: obj.setup() without return types