class_docstr: Skip block for GNN
code: def forward(self, batch):
      node_feature = batch.node_feature
      if cfg.gnn.stage_type == "skipsum":
          batch.node_feature = node_feature + self.f(batch).node_feature
      elif cfg.gnn.stage_type == "skipconcat":
          batch.node_feature = torch.cat(
              (node_feature, self.f(batch).node_feature), 1
          )
      else:
          raise ValueError(
              "cfg.gnn.stage_type must in [skipsum, skipconcat]"
          )
      batch.node_feature = self.act(batch.node_feature)
      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.act import act_dict
  from graphgym.models.feature_augment import Preprocess
  from graphgym.models.feature_encoder import edge_encoder_dict, node_encoder_dict
  from graphgym.models.head import head_dict
  from graphgym.models.layer import BatchNorm1dEdge, BatchNorm1dNode, GeneralLayer, GeneralMultiLayer
label_desc: Use image node_id 2 for calling the GNNSkipBlock obj's underlying member method code with example usage: obj.forward(batch) and returns: batch