code: def test_restarts_with_multiple_groups(self, classifier_module):
      classifier = classifier_module()
      optimizer = SGD(
          [
              {
                  "params": classifier.sequential[0].parameters(),
                  "lr": 1e-3,
              },
              {
                  "params": classifier.sequential[1].parameters(),
                  "lr": 1e-2,
              },
              {
                  "params": classifier.sequential[2].parameters(),
                  "lr": 1e-1,
              },
          ]
      )
  
      epochs = 9
      min_lr_group = [1e-5, 1e-4, 1e-3]
      max_lr_group = [1e-3, 1e-2, 1e-1]
      base_period = 2
      period_mult = 2
      targets = list()
      for min_lr, max_lr in zip(min_lr_group, max_lr_group):
          targets.append(
              self._multi_period_targets(
                  epochs, min_lr, max_lr, base_period, period_mult
              )
          )
      self.assert_lr_correct(
          optimizer,
          targets,
          epochs,
          min_lr_group,
          max_lr_group,
          base_period,
          period_mult,
      )
  
imports: from unittest.mock import Mock
  import numpy
  import pytest
  from sklearn.base import clone
  from torch.optim import SGD
  from torch.optim.lr_scheduler import CosineAnnealingLR
  from torch.optim.lr_scheduler import ExponentialLR
  from torch.optim.lr_scheduler import LambdaLR
  from torch.optim.lr_scheduler import MultiStepLR
  from torch.optim.lr_scheduler import ReduceLROnPlateau
  from torch.optim.lr_scheduler import StepLR
  from torch.optim.lr_scheduler import CyclicLR
  from skorch import NeuralNetClassifier
  from skorch.callbacks.lr_scheduler import WarmRestartLR, LRScheduler
label_desc: Use image node_id 9 for calling the TestWarmRestartLR obj's underlying member method code with example usage: obj.test_restarts_with_multiple_groups(classifier_module) without return types