code: def __init__(self, config):
      super(GNNVirt, self).__init__()
      log.info("gnn_type is %s" % self.__class__.__name__)
      self.config = config
  
      self.atom_encoder = getattr(
          ME, self.config.atom_enc_type, ME.AtomEncoder
      )(self.config.emb_dim)
  
      self.virtualnode_embedding = self.create_parameter(
          shape=[1, self.config.emb_dim],
          dtype="float32",
          default_initializer=nn.initializer.Constant(value=0.0),
      )
  
      self.convs = paddle.nn.LayerList()
      self.batch_norms = paddle.nn.LayerList()
      self.mlp_virtualnode_list = paddle.nn.LayerList()
  
      for layer in range(self.config.num_layers):
          self.convs.append(
              getattr(L, self.config.layer_type)(self.config)
          )
          self.batch_norms.append(L.batch_norm_1d(self.config.emb_dim))
  
      for layer in range(self.config.num_layers - 1):
          self.mlp_virtualnode_list.append(
              nn.Sequential(
                  L.Linear(self.config.emb_dim, self.config.emb_dim),
                  L.batch_norm_1d(self.config.emb_dim),
                  nn.Swish(),
                  L.Linear(self.config.emb_dim, self.config.emb_dim),
                  L.batch_norm_1d(self.config.emb_dim),
                  nn.Swish(),
              )
          )
  
      self.pool = gnn.GraphPool(pool_type="sum")
  
imports: import numpy
  import paddle
  import paddle.nn
  import paddle.nn.functional
  import pgl
  import pgl.nn
  from pgl.utils.logger import log
  import models.mol_encoder
  import models.layers
label_desc: Use image node_id 1 to create a new GNNVirt object from inherited base classes: paddle.nn with example: obj = GNNVirt(config)