code: def __init__(
      self,
      node_feat_dim,
      message_net_hiddens,
      update_net_hiddens,
      node_update_type=NodeUpdateType.RESIDUAL,
      layer_norm=False,
  ):
      super(GEMBConv, self).__init__()
      assert node_update_type in [
          NodeUpdateType.MLP,
          NodeUpdateType.RESIDUAL,
          NodeUpdateType.GRU,
      ]
      self.node_update_type = node_update_type
      self._get_message_net(node_feat_dim, message_net_hiddens)
      self._get_update_net(
          node_feat_dim, update_net_hiddens, node_update_type
      )
      if layer_norm:
          self.message_norm = torch.nn.LayerNorm()
          self.update_norm = torch.nn.LayerNorm()
  
imports: import torch
  import torch.nn
  from torch_scatter import scatter
  from torch_geometric.nn import global_add_pool, global_mean_pool, global_max_pool, GINConv
  from dig.auggraph.method.GraphAug.constants import *
label_desc: Use image node_id 1 to create a new GEMBConv object from inherited base classes: torch.nn with example: obj = GEMBConv(node_feat_dim, message_net_hiddens, update_net_hiddens, node_update_type, layer_norm)