code: def _get_scheduler(self, stage, optimizer):
      if stage == "pretraining":
          lr_scheduler_type = self.p_lr_scheduler_type
      else:
          lr_scheduler_type = self.f_lr_scheduler_type
      if (
          type(lr_scheduler_type) == str
          and lr_scheduler_type == "steplr"
      ):
          scheduler = StepLR(optimizer, step_size=100, gamma=0.1)
      elif (
          type(lr_scheduler_type) == str
          and lr_scheduler_type == "multisteplr"
      ):
          scheduler = MultiStepLR(
              optimizer, milestones=[30, 80], gamma=0.1
          )
      elif (
          type(lr_scheduler_type) == str
          and lr_scheduler_type == "exponentiallr"
      ):
          scheduler = ExponentialLR(optimizer, gamma=0.1)
      elif (
          type(lr_scheduler_type) == str
          and lr_scheduler_type == "reducelronplateau"
      ):
          scheduler = ReduceLROnPlateau(optimizer, "min")
      else:
          scheduler = None
      return scheduler
  
imports: import os
  import torch
  import torch_geometric
  import logging
  import numpy
  import typing
  from tqdm import trange
  from typing import Union, Tuple, Sequence, Type, Callable
  import torch.nn.functional
  import torch.utils.data
  from torch.optim.lr_scheduler import StepLR, MultiStepLR, ExponentialLR, ReduceLROnPlateau
  from .losses import NTXent_loss
  from .utils import get_view_by_name
  from autogl.module.model.encoders.base_encoder import AutoHomogeneousEncoderMaintainer
  from ..base import BaseTrainer, EarlyStopping, _DummyModel
  from ..evaluation import Evaluation, get_feval, Acc
  from ...model import BaseAutoModel, BaseEncoderMaintainer, BaseDecoderMaintainer, EncoderUniversalRegistry, DecoderUniversalRegistry
  from ....utils import get_logger
  from ....datasets import utils
label_desc: Use image node_id 22 for calling the BaseContrastiveTrainer obj's underlying member method code with example usage: obj._get_scheduler(stage, optimizer) and returns: scheduler