code: def __init__(
      self,
      annotation_size,
      out_feats,
      n_steps,
      n_etypes,
      max_seq_length,
      num_cls,
  ):
      super(GGSNN, self).__init__()
  
      self.annotation_size = annotation_size
      self.out_feats = out_feats
      self.max_seq_length = max_seq_length
  
      self.ggnn = GatedGraphConv(
          in_feats=out_feats,
          out_feats=out_feats,
          n_steps=n_steps,
          n_etypes=n_etypes,
      )
  
      self.annotation_out_layer = nn.Linear(
          annotation_size + out_feats, annotation_size
      )
  
      pooling_gate_nn = nn.Linear(annotation_size + out_feats, 1)
      self.pooling = GlobalAttentionPooling(pooling_gate_nn)
  
      self.output_layer = nn.Linear(
          annotation_size + out_feats, num_cls
      )
      self.loss_fn = nn.CrossEntropyLoss(reduction="none")
  
file_path: dgl/examples/pytorch/ggnn/ggsnn.py
imports: import torch
  import torch.nn.functional
  from dgl.nn.pytorch import GatedGraphConv, GlobalAttentionPooling
  from torch import nn
label_desc: Use image node_id 1 to create a new GGSNN object from inherited base classes: nn with example: obj = GGSNN(annotation_size, out_feats, n_steps, n_etypes, max_seq_length, num_cls)