code: def __init__(
      self,
      num_nodes,
      num_layers,
      input_size,
      hidden_size,
      output_size,
      num_heads,
      feat_drop=0.6,
      attn_drop=0.6,
      pool_size=None,
      buffer_size=None,
      **kwargs,
  ):
      super().__init__(
          num_nodes,
          num_layers,
          hidden_size * num_heads,
          pool_size,
          buffer_size,
      )
  
      self.input_size = input_size
      self.hidden_size = hidden_size
      self.output_size = output_size
      self.num_heads = num_heads
      self.num_layers = num_layers
  
      self.convs = nn.LayerList()
      for i in range(self.num_layers - 1):
          in_dim = input_size if i == 0 else hidden_size * num_heads
          conv = pgl.nn.GATConv(
              in_dim,
              hidden_size,
              feat_drop,
              attn_drop,
              num_heads,
              activation="elu",
          )
          self.convs.append(conv)
  
      if self.num_layers == 1:
          hidden_dim = input_size
      else:
          hidden_dim = hidden_size * num_heads
      conv = pgl.nn.GATConv(
          hidden_dim,
          output_size,
          feat_drop,
          attn_drop,
          1,
          concat=False,
          activation=None,
      )
      self.convs.append(conv)
  
file_path: PGL/apps/GNNAutoScale/gnn_models/gat.py
imports: import paddle
  import pgl
  import paddle.nn
  from .base_model import ScalableGNN
label_desc: Use image node_id 1 to create a new GAT object from inherited base classes: ScalableGNN with example: obj = GAT(num_nodes, num_layers, input_size, hidden_size, output_size, num_heads, feat_drop, attn_drop, pool_size, buffer_size)