code: def __init__(
      self,
      hid_dim,
      out_dim,
      num_layers,
      dropout=0.2,
      batch_norm=True,
      residual=True,
      activation=F.relu,
  ):
      super(GatedGCN, self).__init__()
  
      self.num_layers = num_layers
      self.dropout = dropout
  
      self.node_encoder = AtomEncoder(hid_dim)
      self.edge_encoder = BondEncoder(hid_dim)
  
      self.layers = nn.ModuleList()
      for _ in range(self.num_layers):
          layer = GatedGCNConv(
              input_feats=hid_dim,
              edge_feats=hid_dim,
              output_feats=hid_dim,
              dropout=dropout,
              batch_norm=batch_norm,
              residual=residual,
              activation=activation,
          )
          self.layers.append(layer)
  
      self.pooling = AvgPooling()
      self.output = nn.Linear(hid_dim, out_dim)
  
file_path: dgl/examples/core/gated_gcn/train.py
imports: import argparse
  import time
  import torch
  import torch.nn
  import torch.nn.functional
  import torch.optim
  from dgl.dataloading import GraphDataLoader
  from dgl.nn.pytorch import GatedGCNConv
  from dgl.nn.pytorch.glob import AvgPooling
  from ogb.graphproppred import DglGraphPropPredDataset, Evaluator
  from ogb.graphproppred.mol_encoder import AtomEncoder, BondEncoder
label_desc: Use image node_id 1 to create a new GatedGCN object from inherited base classes: nn with example: obj = GatedGCN(hid_dim, out_dim, num_layers, dropout, batch_norm, residual, activation)