code: def _build_actor_network(
      self,
      obs,
      obs_space,
      act_space,
      use_state_preprocessor,
      hiddens,
      activation=None,
      scope=None,
  ):
      with tf1.variable_scope(scope, reuse=tf1.AUTO_REUSE) as scope:
          if use_state_preprocessor:
              model = ModelCatalog.get_model_v2(
                  obs_space,
                  act_space,
                  1,
                  self.config["model"],
              )
              out = model.last_layer
          else:
              model = None
              out = obs
  
          for hidden in hiddens:
              out = tf1.layers.dense(
                  out, units=hidden, activation=activation
              )
          feature = tf1.layers.dense(
              out, units=act_space.shape[0], activation=None
          )
          sampler = tfp.distributions.RelaxedOneHotCategorical(
              temperature=1.0, logits=feature
          ).sample()
  
      return sampler, feature, model, tf1.global_variables(scope.name)
  
imports: import logging
  import numpy
  from gymnasium.spaces import Box, Discrete
  from ray.rllib.algorithms.dqn.dqn_tf_policy import minimize_and_clip
  from ray.rllib.evaluation.postprocessing import adjust_nstep
  from ray.rllib.models import ModelCatalog
  from ray.rllib.policy.policy import Policy
  from ray.rllib.policy.sample_batch import SampleBatch
  from ray.rllib.policy.tf_policy import TFPolicy
  from ray.rllib.utils.annotations import override
  from ray.rllib.utils.error import UnsupportedSpaceException
  from ray.rllib.utils.framework import try_import_tf, try_import_tfp
  from ray.rllib.utils.metrics.learner_info import LEARNER_STATS_KEY
label_desc: Use image node_id 12 for calling the MADDPGTFPolicy obj's underlying member method code with example usage: obj._build_actor_network(obs, obs_space, act_space, use_state_preprocessor, hiddens, activation, scope) and returns: sampler,  feature,  model,  tf1