code: def forward(self, A_hat, X):
      # Flatten the head and feature dimension.
      Z = F.elu(self.in_conv(A_hat, X)).flatten(1)
      # Average over the head dimension.
      Z = self.out_conv(A_hat, Z).mean(-1)
      return Z
  
file_path: dgl/examples/sparse/gat.py
imports: import dgl.sparse
  import torch
  import torch.nn
  import torch.nn.functional
  from dgl.data import CoraGraphDataset
  from torch.optim import Adam
label_desc: Use image node_id 2 for calling the GAT obj's underlying member method code with example usage: obj.forward(A_hat, X) and returns: Z