code: def test_scheduler(self):
      config = self._get_valid_config()
  
      # Check as warmup
      scheduler = LinearParamScheduler.from_config(config)
      schedule = [
          round(scheduler(epoch_num / self._num_epochs), 4)
          for epoch_num in range(self._num_epochs)
      ]
      expected_schedule = [
          config["start_value"]
      ] + self._get_valid_intermediate()
      self.assertEqual(schedule, expected_schedule)
  
      # Check as decay
      tmp = config["start_value"]
      config["start_value"] = config["end_value"]
      config["end_value"] = tmp
      scheduler = LinearParamScheduler.from_config(config)
      schedule = [
          round(scheduler(epoch_num / self._num_epochs), 4)
          for epoch_num in range(self._num_epochs)
      ]
      expected_schedule = [config["start_value"]] + list(
          reversed(self._get_valid_intermediate())
      )
      self.assertEqual(schedule, expected_schedule)
  
file_path: ClassyVision/test/optim_param_scheduler_linear_test.py
imports: import copy
  import unittest
  from classy_vision.optim.param_scheduler import build_param_scheduler, LinearParamScheduler
label_desc: Use image node_id 4 for calling the TestLienarScheduler obj's underlying member method code with example usage: obj.test_scheduler() without return types