code: def forward(self, graph, feat):
      h = feat
      h = self.input_drop(h)
  
      for i in range(self.n_layers):
          conv = self.convs[i](graph, h)
  
          h = conv
  
          if i < self.n_layers - 1:
              h = h.flatten(1)
              h = self.norms[i](h)
              h = self.activation(h, inplace=True)
              h = self.dropout(h)
  
      h = h.mean(1)
      h = self.bias_last(h)
  
      return h
  
imports: import dgl.nn.pytorch
  import torch
  import torch.nn
  from dgl import function
  from dgl.ops import edge_softmax
  from dgl.utils import expand_as_pair
label_desc: Use image node_id 2 for calling the GAT obj's underlying member method code with example usage: obj.forward(graph, feat) and returns: h