class_docstr: The Proximal Policy Optimization Algorithm aka PPO.
  
  Trains policy and value models using the PPO algortithm.
class_docstr_tok: ["The","Proximal","Policy","Optimization","Algorithm","aka","PPO",".","Trains","policy","and","value","models","using","the","PPO","algortithm","."]
code: def clipped_objective_mean(self):
      def f(
          dist_inputs,
          values,
          returns,
          dones,
          rewards,
          actions,
          old_log_probs,
      ):
          """Clipped objective from the PPO algorithm."""
          del dones, rewards
          advantages = returns - values
          probs_ratio = rl_layers.ProbsRatio(
              dist_inputs,
              actions,
              old_log_probs,
              log_prob_fun=self._policy_dist.log_prob,
          )
          # advantages are of the shape [128,1,1]
          # and probs_ratio are of the shape [128,1]
          advantages = advantages.squeeze(axis=2)
          clipped_objective = rl_layers.ClippedObjective(
              probs_ratio, advantages, epsilon=self._epsilon
          )
          return jnp.mean(clipped_objective)
  
      return tl.Fn("ClippedObjectiveMean", f)
  
imports: import functools
  from trax import data
  from trax import layers
  from trax import supervised
  from trax.fastmath import numpy
  from trax.fastmath import stop_gradient
  from trax.rl import actor_critic
  from trax.rl import distributions
  from trax.rl import rl_layers
  from trax.rl import training
  from trax.supervised import lr_schedules
label_desc: Use image node_id 9 for calling the PPOJoint obj's underlying member method code with example usage: obj.clipped_objective_mean() and returns: tl, jnp