code: def __init__(self, input_size, output_size, act=None):
      super(GATConv, self).__init__()
      self.output_size = output_size
      self.num_heads = 1
      self.feat_drop = 0.6
      self.attn_drop = 0.6
      self.concat = True
  
      self.linear = nn.Linear(input_size, self.num_heads * output_size)
      self.weight_src = self.create_parameter(
          shape=[self.num_heads, output_size]
      )
      self.weight_dst = self.create_parameter(
          shape=[self.num_heads, output_size]
      )
  
      self.feat_dropout = nn.Dropout(p=self.feat_drop)
      self.attn_dropout = nn.Dropout(p=self.attn_drop)
      self.leaky_relu = nn.LeakyReLU(negative_slope=0.2)
  
      if isinstance(act, str):
          act = getattr(F, act)
      self.activation = act
  
imports: import numpy
  import paddle
  import paddle.nn
  import paddle.nn.functional
  import pgl
  from pgl.nn import functional
label_desc: Use image node_id 1 to create a new GATConv object from inherited base classes: nn with example: obj = GATConv(input_size, output_size, act)