code: def __init__(self, in_size, hid_size, out_size, heads):
      super().__init__()
      self.gat_layers = nn.ModuleList()
      # three-layer GAT
      self.gat_layers.append(
          dglnn.GATConv(in_size, hid_size, heads[0], activation=F.elu)
      )
      self.gat_layers.append(
          dglnn.GATConv(
              hid_size * heads[0],
              hid_size,
              heads[1],
              residual=True,
              activation=F.elu,
          )
      )
      self.gat_layers.append(
          dglnn.GATConv(
              hid_size * heads[1],
              out_size,
              heads[2],
              residual=True,
              activation=None,
          )
      )
  
file_path: dgl/examples/pytorch/gat/train_ppi.py
imports: import dgl.nn
  import numpy
  import torch
  import torch.nn
  import torch.nn.functional
  from dgl.data.ppi import PPIDataset
  from dgl.dataloading import GraphDataLoader
  from sklearn.metrics import f1_score
label_desc: Use image node_id 1 to create a new GAT object from inherited base classes: nn with example: obj = GAT(in_size, hid_size, out_size, heads)