code: def test_configure_optimizers(self):
      # Ordering is value then policy
      trainer = self._construct_trainer()
      optimizers = trainer.configure_optimizers()
      self.assertTrue(
          torch.all(
              torch.isclose(
                  optimizers[0]["optimizer"].param_groups[0]["params"][
                      0
                  ],
                  list(trainer.value_net.fc.dnn[0].parameters())[0],
              )
          )
      )
      self.assertTrue(
          torch.all(
              torch.isclose(
                  optimizers[1]["optimizer"].param_groups[0]["params"][
                      0
                  ],
                  list(
                      trainer.scorer.shared_network.fc.dnn[
                          0
                      ].parameters()
                  )[0],
              )
          )
      )
  
imports: import unittest
  from collections import defaultdict
  from unittest import mock
  import torch
  from reagent.core.types import PolicyGradientInput
  from reagent.evaluation.evaluator import get_metrics_to_score
  from reagent.gym.policies.policy import Policy
  from reagent.gym.policies.samplers.discrete_sampler import SoftmaxActionSampler
  from reagent.models.dueling_q_network import DuelingQNetwork
  from reagent.models.fully_connected_network import FloatFeatureFullyConnected
  from reagent.training.parameters import PPOTrainerParameters
  from reagent.training.ppo_trainer import PPOTrainer
  from reagent.workflow.types import RewardOptions
label_desc: Use image node_id 5 for calling the TestPPO obj's underlying member method code with example usage: obj.test_configure_optimizers() without return types