class_docstr: Creates an actor producing either Normal or Categorical distribution.
  
  Note: By default, this network uses `NormalProjectionNetwork` for continuous
  projection which by default uses `tanh_squash_to_spec` to normalize its
  output. Due to the nature of the `tanh` function, values near the spec bounds
  cannot be returned.
class_docstr_tok: ["Creates","an","actor","producing","either","Normal","or","Categorical","distribution",".","Note",":","By","default",",","this","network","uses","`","NormalProjectionNetwork","`","for","continuous","projection","which","by","default","uses","`","tanh_squash_to_spec","`","to","normalize","its","output",".","Due","to","the","nature","of","the","`","tanh","`","function",",","values","near","the","spec","bounds","can","not","be","returned","."]
code: def call(
      self,
      observations,
      step_type,
      network_state,
      training=False,
      mask=None,
  ):
      state, network_state = self._encoder(
          observations,
          step_type=step_type,
          network_state=network_state,
          training=training,
      )
      outer_rank = nest_utils.get_outer_rank(
          observations, self.input_tensor_spec
      )
  
      def call_projection_net(proj_net):
          distribution, _ = proj_net(
              state, outer_rank, training=training, mask=mask
          )
          return distribution
  
      output_actions = tf.nest.map_structure(
          call_projection_net, self._projection_networks
      )
      return output_actions, network_state
  
file_path: agents/tf_agents/networks/actor_distribution_network.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import gin
  import numpy
  import tensorflow
  import tensorflow_probability
  from tf_agents.networks import categorical_projection_network
  from tf_agents.networks import encoding_network
  from tf_agents.networks import network
  from tf_agents.networks import normal_projection_network
  from tf_agents.specs import tensor_spec
  from tf_agents.utils import nest_utils
label_desc: Use image node_id 3 for calling the ActorDistributionNetwork obj's underlying member method code with example usage: obj.call(observations, step_type, network_state, training, mask) and returns: output_actions,  network_state, distribution