class_docstr: Trust Region Policy Optimization (TRPO).
  
  Args:
      env_spec (EnvSpec): Environment specification.
      policy (garage.torch.policies.Policy): Policy.
      value_function (garage.torch.value_functions.ValueFunction): The value
          function.
      sampler (garage.sampler.Sampler): Sampler.
      policy_optimizer (garage.torch.optimizer.OptimizerWrapper): Optimizer
          for policy.
      vf_optimizer (garage.torch.optimizer.OptimizerWrapper): Optimizer for
          value function.
      num_train_per_epoch (int): Number of train_once calls per epoch.
      discount (float): Discount.
      gae_lambda (float): Lambda used for generalized advantage
          estimation.
      center_adv (bool): Whether to rescale the advantages
          so that they have mean 0 and standard deviation 1.
      positive_adv (bool): Whether to shift the advantages
          so that they are always positive. When used in
          conjunction with center_adv the advantages will be
          standardized before shifting.
      policy_ent_coeff (float): The coefficient of the policy entropy.
          Setting it to zero would mean no entropy regularization.
      use_softplus_entropy (bool): Whether to estimate the softmax
          distribution of the entropy to prevent the entropy from being
          negative.
      stop_entropy_gradient (bool): Whether to stop the entropy gradient.
      entropy_method (str): A string from: 'max', 'regularized',
          'no_entropy'. The type of entropy method to use. 'max' adds the
          dense entropy to the reward for each time step. 'regularized' adds
          the mean entropy to the surrogate objective. See
          https://arxiv.org/abs/1805.00909 for more details.
code: def __init__(
      self,
      env_spec,
      policy,
      value_function,
      sampler,
      policy_optimizer=None,
      vf_optimizer=None,
      num_train_per_epoch=1,
      discount=0.99,
      gae_lambda=0.98,
      center_adv=True,
      positive_adv=False,
      policy_ent_coeff=0.0,
      use_softplus_entropy=False,
      stop_entropy_gradient=False,
      entropy_method="no_entropy",
  ):
      if policy_optimizer is None:
          policy_optimizer = OptimizerWrapper(
              (
                  ConjugateGradientOptimizer,
                  dict(max_constraint_value=0.01),
              ),
              policy,
          )
      if vf_optimizer is None:
          vf_optimizer = OptimizerWrapper(
              (torch.optim.Adam, dict(lr=2.5e-4)),
              value_function,
              max_optimization_epochs=10,
              minibatch_size=64,
          )
  
      super().__init__(
          env_spec=env_spec,
          policy=policy,
          value_function=value_function,
          sampler=sampler,
          policy_optimizer=policy_optimizer,
          vf_optimizer=vf_optimizer,
          num_train_per_epoch=num_train_per_epoch,
          discount=discount,
          gae_lambda=gae_lambda,
          center_adv=center_adv,
          positive_adv=positive_adv,
          policy_ent_coeff=policy_ent_coeff,
          use_softplus_entropy=use_softplus_entropy,
          stop_entropy_gradient=stop_entropy_gradient,
          entropy_method=entropy_method,
      )
  
file_path: garage/src/garage/torch/algos/trpo.py
imports: import torch
  from garage.torch._functions import zero_optim_grads
  from garage.torch.algos import VPG
  from garage.torch.optimizers import ConjugateGradientOptimizer, OptimizerWrapper
label_desc: Use image node_id 1 to create a new TRPO object from inherited base classes: VPG with example: obj = TRPO(env_spec, policy, value_function, sampler, policy_optimizer, vf_optimizer, num_train_per_epoch, discount, gae_lambda, center_adv, positive_adv, policy_ent_coeff, use_softplus_entropy, stop_entropy_gradient, entropy_method)