code: def GRANDConv(graph, feats, order):
      """
      Parameters
      -----------
      graph: dgl.Graph
          The input graph
      feats: Tensor (n_nodes * feat_dim)
          Node features
      order: int
          Propagation Steps
      """
      with graph.local_scope():
          """Calculate Symmetric normalized adjacency matrix   \hat{A}"""
          degs = graph.in_degrees().float().clamp(min=1)
          norm = th.pow(degs, -0.5).to(feats.device).unsqueeze(1)
  
          graph.ndata["norm"] = norm
          graph.apply_edges(fn.u_mul_v("norm", "norm", "weight"))
  
          """ Graph Conv """
          x = feats
          y = 0 + feats
  
          for i in range(order):
              graph.ndata["h"] = x
              graph.update_all(
                  fn.u_mul_e("h", "weight", "m"), fn.sum("m", "h")
              )
              x = graph.ndata.pop("h")
              y.add_(x)
  
      return y / (order + 1)
  
file_path: dgl/examples/pytorch/grand/model.py
imports: import dgl.function
  import numpy
  import torch
  import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 2 for calling a global function with example usage: GRANDConv(graph, feats, order) and returns: unknown