class_docstr: Contains the actor network structure.
docstr: Helper method for creating the actor network.
code: def create_sequential_actor_net(
      self, fc_layer_units, action_tensor_spec, seed=None
  ):
      """Helper method for creating the actor network."""
  
      self._seed_stream = self.seed_stream_class(
          seed=seed, salt="tf_agents_sequential_layers"
      )
  
      def _get_seed():
          seed = self._seed_stream()
          if seed is not None:
              seed = seed % sys.maxsize
          return seed
  
      def create_dist(loc_and_scale):
          loc = loc_and_scale["loc"]
          loc = tanh_and_scale_to_spec(loc, action_tensor_spec)
  
          scale = loc_and_scale["scale"]
          scale = tf.math.softplus(scale)
  
          return tfp.distributions.MultivariateNormalDiag(
              loc=loc, scale_diag=scale, validate_args=True
          )
  
      def means_layers():
          # TODO(b/179510447): align these parameters with Schulman 17.
          return tf.keras.layers.Dense(
              action_tensor_spec.shape.num_elements(),
              kernel_initializer=tf.keras.initializers.VarianceScaling(
                  scale=0.1, seed=_get_seed()
              ),
              name="means_projection_layer",
          )
  
      def std_layers():
          # TODO(b/179510447): align these parameters with Schulman 17.
          std_bias_initializer_value = np.log(np.exp(0.35) - 1)
          return bias_layer.BiasLayer(
              bias_initializer=tf.constant_initializer(
                  value=std_bias_initializer_value
              )
          )
  
      def no_op_layers():
          return tf.keras.layers.Lambda(lambda x: x)
  
      dense = functools.partial(
          tf.keras.layers.Dense,
          activation=tf.nn.tanh,
          kernel_initializer=tf.keras.initializers.Orthogonal(
              seed=_get_seed()
          ),
      )
  
      return sequential.Sequential(
          [dense(num_units) for num_units in fc_layer_units]
          + [means_layers()]
          + [
              tf.keras.layers.Lambda(
                  lambda x: {"loc": x, "scale": tf.zeros_like(x)}
              )
          ]
          + [
              nest_map.NestMap(
                  {
                      "loc": no_op_layers(),
                      "scale": std_layers(),
                  }
              )
          ]
          +
          # Create the output distribution from the mean and standard deviation.
          [tf.keras.layers.Lambda(create_dist)]
      )
  
file_path: agents/tf_agents/agents/ppo/ppo_actor_network.py
imports: import functools
  import sys
  import numpy
  import tensorflow.compat.v2
  import tensorflow_probability
  from tf_agents.keras_layers import bias_layer
  from tf_agents.networks import nest_map
  from tf_agents.networks import sequential
label_desc: Use image node_id 2 for calling the PPOActorNetwork obj's underlying member method code with example usage: obj.create_sequential_actor_net(fc_layer_units, action_tensor_spec, seed) and returns: sequential, seed, tfp, tf, bias_layer, tf