code: def setup(self):
      super().setup()
      catalog = self.config.get_catalog()
      # Old pi and old encoder are the "target networks" that are used for
      # the stabilization of the updates of the current pi and encoder.
      self.old_pi = catalog.build_pi_head(framework=self.framework)
      self.old_encoder = catalog.build_actor_critic_encoder(
          framework=self.framework
      )
      self.old_pi.load_state_dict(self.pi.state_dict())
      self.old_encoder.load_state_dict(self.encoder.state_dict())
      self.old_pi.trainable = False
      self.old_encoder.trainable = False
  
file_path: ray/python/ray/rllib/algorithms/appo/torch/appo_torch_rl_module.py
imports: from typing import List
  from ray.rllib.algorithms.appo.appo import OLD_ACTION_DIST_LOGITS_KEY
  from ray.rllib.algorithms.ppo.torch.ppo_torch_rl_module import PPOTorchRLModule
  from ray.rllib.core.models.base import ACTOR
  from ray.rllib.core.models.tf.encoder import ENCODER_OUT
  from ray.rllib.core.rl_module.rl_module_with_target_networks_interface import RLModuleWithTargetNetworksInterface
  from ray.rllib.policy.sample_batch import SampleBatch
  from ray.rllib.utils.annotations import override
  from ray.rllib.utils.nested_dict import NestedDict
label_desc: Use image node_id 1 for calling the APPOTorchRLModule obj's underlying member method code with example usage: obj.setup() without return types