class_docstr: Exponentially increases the learning rate between two boundaries over a number of
  iterations.
  
  Args:
      optimizer: wrapped optimizer.
      start_lrs: the initial learning rate for parameter groups.
      end_lrs: the final learning rate for parameter groups.
      num_iter: the number of iterations over which the test
          occurs. Default: 100.
      last_epoch: the index of last epoch. Default: -1.
code: def __init__(
      self,
      optimizer: Optimizer,
      start_lrs: List[float],
      end_lrs: List[float],
      num_iter: int,
      last_epoch: int = -1,
  ):
      self.end_lrs = end_lrs
      self.num_iter = num_iter
      super(_ExponentialLR, self).__init__(optimizer, last_epoch)
  
      # override base_lrs
      self.base_lrs = start_lrs
  
imports: import contextlib
  import logging
  import tempfile
  import warnings
  from math import ceil
  from pathlib import Path
  from typing import Any, Callable, Dict, List, Mapping, Optional, Union
  import torch
  from torch.optim import Optimizer
  from torch.optim.lr_scheduler import _LRScheduler
  import ignite.distributed
  from ignite.engine import Engine, Events
  from ignite.handlers import Checkpoint
  from ignite.handlers.param_scheduler import LRScheduler, ParamGroupScheduler, PiecewiseLinear
label_desc: Use image node_id 1 to create a new _ExponentialLR object from inherited base classes: _LRScheduler with example: obj = _ExponentialLR(optimizer, start_lrs, end_lrs, num_iter, last_epoch)