class_docstr: Description
  -----------
  Message normalization was introduced in "DeeperGCN: All You Need to Train Deeper GCNs <https://arxiv.org/abs/2006.07739>"
  
  Parameters
  ----------
  learn_scale: bool
      Whether s is a learnable scaling factor or not. Default is False.
code: def forward(self, feats, msg, p=2):
      msg = F.normalize(msg, p=2, dim=-1)
      feats_norm = feats.norm(p=p, dim=-1, keepdim=True)
      return msg * feats_norm * self.scale
  
file_path: dgl/examples/pytorch/deepergcn/modules.py
imports: import torch
  import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 2 for calling the MessageNorm obj's underlying member method code with example usage: obj.forward(feats, msg, p) and returns: unknown