code: def test_no_soft_update(self) -> None:
      model = Model()
      target_model = copy.deepcopy(model)
  
      for target_param, param in zip(
          model.parameters(), target_model.parameters()
      ):
          self.assertIs(target_param, param)
  
      optimizer = torch.optim.Adam(model.parameters())
  
      x = torch.tensor([1, 2], dtype=torch.int64)
      emb = model(x)
  
      loss = emb.sum()
  
      loss.backward()
      optimizer.step()
  
      params = list(model.parameters())
      self.assertEqual(1, len(params))
      param = params[0].detach().numpy()
  
      self._soft_update(model, target_model, 0.1)
  
      target_params = list(target_model.parameters())
      self.assertEqual(1, len(target_params))
      target_param = target_params[0].detach().numpy()
  
      npt.assert_array_equal(target_param, param)
  
file_path: ReAgent/reagent/test/models/test_no_soft_update_embedding.py
imports: import copy
  import unittest
  import numpy.testing
  import torch
  import torch.nn
  from reagent.models.no_soft_update_embedding import NoSoftUpdateEmbedding
label_desc: Use image node_id 1 for calling the TestNoSoftUpdteEmbedding obj's underlying member method code with example usage: obj.test_no_soft_update() without return types