class_docstr: Description
  -----------
  Introduced in `Combining Label Propagation and Simple Models Out-performs Graph Neural Networks <https://arxiv.org/abs/2010.13993>`_
  
  Parameters
  ----------
      num_correction_layers: int
          The number of correct propagations.
      correction_alpha: float
          The coefficient of correction.
      correction_adj: str
          'DAD': D^-0.5 * A * D^-0.5
          'DA': D^-1 * A
          'AD': A * D^-1
      num_smoothing_layers: int
          The number of smooth propagations.
      smoothing_alpha: float
          The coefficient of smoothing.
      smoothing_adj: str
          'DAD': D^-0.5 * A * D^-0.5
          'DA': D^-1 * A
          'AD': A * D^-1
      autoscale: bool, optional
          If set to True, will automatically determine the scaling factor :math:`\sigma`. Default is True.
      scale: float, optional
          The scaling factor :math:`\sigma`, in case :obj:`autoscale = False`. Default is 1.
code: def __init__(
      self,
      num_correction_layers,
      correction_alpha,
      correction_adj,
      num_smoothing_layers,
      smoothing_alpha,
      smoothing_adj,
      autoscale=True,
      scale=1.0,
  ):
      super(CorrectAndSmooth, self).__init__()
  
      self.autoscale = autoscale
      self.scale = scale
  
      self.prop1 = LabelPropagation(
          num_correction_layers, correction_alpha, correction_adj
      )
      self.prop2 = LabelPropagation(
          num_smoothing_layers, smoothing_alpha, smoothing_adj
      )
  
imports: import dgl.function
  import torch
  import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 1 to create a new CorrectAndSmooth object from inherited base classes: nn with example: obj = CorrectAndSmooth(num_correction_layers, correction_alpha, correction_adj, num_smoothing_layers, smoothing_alpha, smoothing_adj, autoscale, scale)