class_docstr: General GNN model: encoder + stage + head
  
  Args:
      dim_in (int): Input dimension
      dim_out (int): Output dimension
      **kwargs (optional): Optional additional args
code: def forward(self, batch):
      for module in self.children():
          batch = module(batch)
      return batch
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  import graphgym.register
  from graphgym.config import cfg
  from graphgym.init import init_weights
  from graphgym.models.feature_encoder_pyg import edge_encoder_dict, node_encoder_dict
  from graphgym.models.head_pyg import head_dict
  from graphgym.models.layer_pyg import BatchNorm1dEdge, BatchNorm1dNode, GeneralLayer, GeneralMultiLayer
label_desc: Use image node_id 2 for calling the GNN obj's underlying member method code with example usage: obj.forward(batch) and returns: batch