code: def __init__(self, config, with_efeat=True):
      super(CatGINConv, self).__init__()
      log.info("layer_type is %s" % self.__class__.__name__)
      self.config = config
      emb_dim = self.config.emb_dim
  
      self.with_efeat = with_efeat
  
      self.mlp = nn.Sequential(
          Linear(emb_dim, emb_dim),
          batch_norm_1d(emb_dim),
          nn.Swish(),
          Linear(emb_dim, emb_dim),
      )
  
      self.send_mlp = nn.Sequential(
          nn.Linear(2 * emb_dim, 2 * emb_dim),
          nn.Swish(),
          Linear(2 * emb_dim, emb_dim),
      )
  
      self.eps = self.create_parameter(
          shape=[1, 1],
          dtype="float32",
          default_initializer=nn.initializer.Constant(value=0),
      )
  
      if self.with_efeat:
          self.bond_encoder = getattr(
              ME, self.config.bond_enc_type, ME.BondEncoder
          )(emb_dim=emb_dim)
  
imports: import numpy
  import math
  import paddle
  import paddle.nn
  import paddle.nn.functional
  import paddle.distributed
  import pgl
  import pgl.nn
  from pgl.nn import functional
  from pgl.utils.logger import log
  import models.mol_encoder
label_desc: Use image node_id 1 to create a new CatGINConv object from inherited base classes: paddle.nn with example: obj = CatGINConv(config, with_efeat)