code: def test_get_lr(self):
      opt = build_optimizer(self._get_config())
      param = torch.tensor([1.0], requires_grad=True)
      opt.set_param_groups([{"params": [param], "lr": 1}])
  
      self.assertEqual(opt.options_view.lr, 1)
  
      # Case two: verify LR changes
      opt = build_optimizer(self._get_config())
      param = torch.tensor([1.0], requires_grad=True)
      opt.set_param_groups(
          [{"params": [param], "lr": LinearParamScheduler(1, 2)}]
      )
  
      self.assertAlmostEqual(opt.options_view.lr, 1)
      opt.step(where=0.5)
      self.assertAlmostEqual(opt.options_view.lr, 1.5)
  
imports: from abc import ABC, abstractmethod
  from unittest.mock import MagicMock
  import torch
  import torch.nn
  from classy_vision.generic.util import split_batchnorm_params
  from classy_vision.models import ClassyModel
  from classy_vision.optim import build_optimizer, build_optimizer_schedulers
  from classy_vision.optim.param_scheduler import LinearParamScheduler
label_desc: Use image node_id 14 for calling the TestOptimizer obj's underlying member method code with example usage: obj.test_get_lr() without return types