class_docstr: A fake PPO agent that tracks input trajectories into agent.train.
class_docstr_tok: ["A","fake","PPO","agent","that","tracks","input","trajectories","into","agent.train","."]
code: def _train(self, experience, weights):
      self.train_called_times.assign_add(1)
      print("append experience")
      print(experience)
      self.experiences.append(experience)
      if self._strategy is None:
          return tf_agent.LossInfo(0.0, 0.0)
      else:
          batch_zero = tf.constant([0.0] * 10, dtype=tf.float32)
          return tf_agent.LossInfo(batch_zero, batch_zero)
  
file_path: agents/tf_agents/train/ppo_learner_test_utils.py
imports: import numpy
  import tensorflow
  from tf_agents.agents import tf_agent
  from tf_agents.agents.ppo import ppo_agent
  from tf_agents.networks import actor_distribution_network
  from tf_agents.networks import value_network
  from tf_agents.specs import tensor_spec
  from tf_agents.trajectories import time_step
  from tf_agents.trajectories import trajectory
label_desc: Use image node_id 2 for calling the FakePPOAgent obj's underlying member method code with example usage: obj._train(experience, weights) and returns: tf_agent, tf_agent