class_docstr: Implement of GAT
      
class_docstr_tok: ["Implement","of","GAT"]
code: def forward(self, graph_list, feature):
      for idx, (sg, sub_index) in enumerate(graph_list):
          # feature = paddle.gather(feature, sub_index, axis=0)
          skip_feat = paddle.gather(feature, sub_index, axis=0)
          skip_feat = self.skips[idx](skip_feat)
  
          for i in range(self.edge_type):
              masked = sg.edge_feat["edge_type"] == i
              m_sg = self.get_subgraph_by_masked(sg, masked)
              if m_sg is not None:
                  feature_temp = self.gats[idx][i](m_sg, feature)
                  feature_temp = paddle.gather(
                      feature_temp, sub_index, axis=0
                  )
                  skip_feat += feature_temp
  
          feature = F.elu(self.norms[idx](skip_feat))
          feature = self.dropout(feature)
      output = self.mlp(feature)
      return output
  
file_path: PGL/ogb_examples/lsc/MAG240M/models/rgat.py
imports: import pgl
  import paddle
  import paddle.nn
  import paddle.nn.functional
  import numpy
  import paddle.fluid.layers
  from pgl.utils.logger import log
  from .gat_conv import linear_init, GATConv
label_desc: Use image node_id 3 for calling the GNNModel obj's underlying member method code with example usage: obj.forward(graph_list, feature) and returns: output