code: def __init__(
      self,
      model,
      gamma=None,
      tau=None,
      actor_lr=None,
      critic_lr=None,
      policy_noise=0.2,  # Noise added to target policy during critic update
      noise_clip=0.5,  # Range to clip target policy noise
      policy_freq=2,
  ):  # Frequency of delayed policy updates
      # checks
      check_model_method(model, "value", self.__class__.__name__)
      check_model_method(model, "policy", self.__class__.__name__)
      check_model_method(model, "Q1", self.__class__.__name__)
      check_model_method(
          model, "get_actor_params", self.__class__.__name__
      )
      check_model_method(
          model, "get_critic_params", self.__class__.__name__
      )
      assert isinstance(gamma, float)
      assert isinstance(tau, float)
      assert isinstance(actor_lr, float)
      assert isinstance(critic_lr, float)
  
      self.gamma = gamma
      self.tau = tau
      self.actor_lr = actor_lr
      self.critic_lr = critic_lr
      self.policy_noise = policy_noise
      self.noise_clip = noise_clip
      self.policy_freq = policy_freq
  
      device = torch.device(
          "cuda" if torch.cuda.is_available() else "cpu"
      )
      self.model = model.to(device)
      self.target_model = deepcopy(model).to(device)
      self.actor_optimizer = torch.optim.Adam(
          self.model.get_actor_params(), lr=actor_lr
      )
      self.critic_optimizer = torch.optim.Adam(
          self.model.get_critic_params(), lr=critic_lr
      )
  
      self.total_it = 0
  
file_path: PARL/parl/algorithms/torch/td3.py
imports: import copy
  import numpy
  import torch
  import torch.nn.functional
  from copy import deepcopy
  import parl
  from parl.utils.utils import check_model_method
label_desc: Use image node_id 1 to create a new TD3 object from inherited base classes: parl with example: obj = TD3(model, gamma, tau, actor_lr, critic_lr, policy_noise, noise_clip, policy_freq)