code: def forward(self, x, A, knn_inds):
      num_local_graphs, num_max_nodes, feat_len = x.shape
  
      x = x.reshape([-1, feat_len])
      x = self.bn0(x)
      x = x.reshape([num_local_graphs, num_max_nodes, feat_len])
  
      x = self.conv1(x, A)
      x = self.conv2(x, A)
      x = self.conv3(x, A)
      x = self.conv4(x, A)
      k = knn_inds.shape[-1]
      mid_feat_len = x.shape[-1]
      edge_feat = paddle.zeros([num_local_graphs, k, mid_feat_len])
      for graph_ind in range(num_local_graphs):
          edge_feat[graph_ind, :, :] = x[graph_ind][
              paddle.to_tensor(knn_inds[graph_ind])
          ]
      edge_feat = edge_feat.reshape([-1, mid_feat_len])
      pred = self.classifier(edge_feat)
  
      return pred
  
file_path: PaddleOCR/ppocr/modeling/heads/gcn.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import paddle
  import paddle.nn
  import paddle.nn.functional
label_desc: Use image node_id 2 for calling the GCN obj's underlying member method code with example usage: obj.forward(x, A, knn_inds) and returns: pred