code: def __init__(
      self,
      num_layers,
      input_size,
      hidden_size,
      output_size,
      num_heads,
      num_out_heads,
      direction_option,
      graph_pooling,
      feat_drop=0.6,
      attn_drop=0.6,
      negative_slope=0.2,
      residual=False,
      activation=F.elu,
  ):
      super(GNNClassifier, self).__init__()
      self.direction_option = direction_option
      heads = [num_heads] * (num_layers - 1) + [num_out_heads]
      self.gnn = GAT(
          num_layers,
          input_size,
          hidden_size,
          hidden_size,
          heads,
          direction_option=direction_option,
          feat_drop=feat_drop,
          attn_drop=attn_drop,
          negative_slope=negative_slope,
          residual=residual,
          activation=activation,
      )
  
      self.clf = FeedForwardNN(
          2 * hidden_size
          if self.direction_option == "bi_sep"
          else hidden_size,
          output_size,
          [hidden_size],
          graph_pool_type=graph_pooling,
      )
  
file_path: graph4nlp/graph4nlp/pytorch/test/graph_classification/run_graph_classification.py
imports: import argparse
  import dgl
  import torch
  import torch.nn
  import torch.nn.functional
  import torch.optim
  from dgl.data import MiniGCDataset
  from torch.utils.data import DataLoader
  from ...data.data import from_dgl, to_batch
  from ...modules.graph_embedding_learning.gat import GAT
  from ...modules.prediction.classification.graph_classification import FeedForwardNN
label_desc: Use image node_id 1 to create a new GNNClassifier object from inherited base classes: nn with example: obj = GNNClassifier(num_layers, input_size, hidden_size, output_size, num_heads, num_out_heads, direction_option, graph_pooling, feat_drop, attn_drop, negative_slope, residual, activation)