class_docstr: Applies message normalization over the aggregated messages as described
  in the `"DeeperGCNs: All You Need to Train Deeper GCNs"
  <https://arxiv.org/abs/2006.07739>`_ paper.
  
  .. math::
  
      \mathbf{x}_i^{\prime} = \mathrm{MLP} \left( \mathbf{x}_{i} + s \cdot
      {\| \mathbf{x}_i \|}_2 \cdot
      \frac{\mathbf{m}_{i}}{{\|\mathbf{m}_i\|}_2} \right)
  
  Args:
      learn_scale (bool, optional): If set to :obj:`True`, will learn the
          scaling factor :math:`s` of message normalization.
          (default: :obj:`False`)
code: def __init__(self, learn_scale: bool = False):
      super().__init__()
      self.scale = Parameter(torch.empty(1), requires_grad=learn_scale)
      self.reset_parameters()
  
file_path: pytorch_geometric/torch_geometric/nn/norm/msg_norm.py
imports: import torch
  import torch.nn.functional
  from torch import Tensor
  from torch.nn import Parameter
label_desc: Use image node_id 1 to create a new MessageNorm object from inherited base classes: torch.nn with example: obj = MessageNorm(learn_scale)