code: def appnp(gw, feature, alpha=0.2, k_hop=10):
      """Implementation of APPNP of "Predict then Propagate: Graph Neural Networks
      meet Personalized PageRank"  (ICLR 2019).
      Args:
          gw: Graph wrapper object (:code:`StaticGraphWrapper` or :code:`GraphWrapper`)
          feature: A tensor with shape (num_nodes, feature_size).
          edge_dropout: Edge dropout rate.
          k_hop: K Steps for Propagation
      Return:
          A tensor with shape (num_nodes, hidden_size)
      """
  
      def send_src_copy(src_feat, dst_feat, edge_feat):
          feature = src_feat["h"]
          return feature
  
      def get_norm(indegree):
          float_degree = L.cast(indegree, dtype="float32")
          float_degree = L.clamp(float_degree, min=1.0)
          norm = L.pow(float_degree, factor=-0.5)
          return norm
  
      cks = []
      h0 = feature
      ngw = gw
      norm = get_norm(ngw.indegree())
  
      for i in range(k_hop):
          feature = feature * norm
          msg = gw.send(send_src_copy, nfeat_list=[("h", feature)])
          feature = gw.recv(msg, "sum")
          feature = feature * norm
          feature = feature * (1 - alpha) + h0 * alpha
  
          if (i + 1) % 3 == 0:
              cks.append(feature)
      return feature, cks
  
file_path: PGL/ogb_examples/nodeproppred/unimp/module/model_unimp_large.py
imports: import pgl
  import paddle.fluid
  import paddle.fluid.layers
  from pgl.utils import paddle_helper
  from pgl import message_passing
  import math
label_desc: Use image node_id 2 for calling a global function with example usage: appnp(gw, feature, alpha, k_hop) and returns: feature,  cks, feature, norm