code: def test_update_eval_model(self):
      policy_network_1 = LinearRegressionUCB(2)
      policy_network_1.avg_A += 0.3
      policy_network_2 = LinearRegressionUCB(2)
      policy_network_2.avg_A += 0.1
      eval_module = PolicyEvaluator(policy_network_1)
      self.assertTrue(
          _compare_state_dicts(
              eval_module.eval_model.state_dict(),
              policy_network_1.state_dict(),
          )
      )
  
      eval_module.update_eval_model(policy_network_2)
      self.assertTrue(
          _compare_state_dicts(
              eval_module.eval_model.state_dict(),
              policy_network_2.state_dict(),
          )
      )
  
      # change to the source model shouldn't affect the model in the eval module
      original_state_dict_2 = copy.deepcopy(
          policy_network_2.state_dict()
      )
      policy_network_2.avg_A += 0.4
      self.assertTrue(
          _compare_state_dicts(
              eval_module.eval_model.state_dict(), original_state_dict_2
          )
      )
  
imports: import copy
  import unittest
  from dataclasses import replace
  from unittest.mock import MagicMock
  import torch
  from pytorch_lightning.loggers import TensorBoardLogger
  from reagent.core.types import CBInput
  from reagent.evaluation.cb.policy_evaluator import PolicyEvaluator
  from reagent.evaluation.cb.utils import add_importance_weights
  from reagent.models.linear_regression import LinearRegressionUCB
label_desc: Use image node_id 4 for calling the TestPolicyEvaluator obj's underlying member method code with example usage: obj.test_update_eval_model() without return types