code: def test_linear_scheduler_no_gaps(self):
      config = self._get_valid_linear_config()
  
      # Check rescaled
      scheduler = CompositeParamScheduler.from_config(config)
      schedule = [
          scheduler(epoch_num / self._num_epochs)
          for epoch_num in range(self._num_epochs)
      ]
      expected_schedule = [
          0.0,
          0.1,
          0.2,
          0.3,
          0.4,
          0.5,
          0.6,
          0.7,
          0.8,
          0.9,
      ]
      self.assertEqual(expected_schedule, schedule)
  
      # Check fixed composition gives same result as only 1 scheduler
      config["schedulers"][1] = config["schedulers"][0]
      config["interval_scaling"] = ["fixed", "fixed"]
      scheduler = CompositeParamScheduler.from_config(config)
      linear_scheduler = build_param_scheduler(config["schedulers"][0])
      schedule = [
          scheduler(epoch_num / self._num_epochs)
          for epoch_num in range(self._num_epochs)
      ]
      expected_schedule = [
          linear_scheduler(epoch_num / self._num_epochs)
          for epoch_num in range(self._num_epochs)
      ]
      self.assertEqual(expected_schedule, schedule)
  
file_path: ClassyVision/test/optim_param_scheduler_composite_test.py
imports: import copy
  import unittest
  from classy_vision.optim.param_scheduler import build_param_scheduler
  from classy_vision.optim.param_scheduler.composite_scheduler import CompositeParamScheduler, IntervalScaling, UpdateInterval
label_desc: Use image node_id 11 for calling the TestCompositeScheduler obj's underlying member method code with example usage: obj.test_linear_scheduler_no_gaps() without return types