code: def node_update(self, x, messages):
      if self.node_update_type == NodeUpdateType.GRU:
          _, new_x = self.update_net(
              messages.unsqueeze(0), x.unsqueeze(0)
          )
          new_x = torch.squeeze(new_x)
      else:
          update_inputs = torch.cat((messages, x), dim=-1)
          new_x = self.update_net(update_inputs)
  
      if hasattr(self, "update_norm"):
          new_x = self.update_norm(new_x)
  
      if self.node_update_type == NodeUpdateType.RESIDUAL:
          return x + new_x
      return new_x
  
file_path: DIG/dig/auggraph/method/GraphAug/aug/aug_encoder.py
imports: import torch
  from torch.nn import Linear, Sequential, ReLU, BatchNorm1d
  from torch_geometric.nn import GINConv
  from torch_scatter import scatter
  from ..constants import *
label_desc: Use image node_id 5 for calling the GEMBConv obj's underlying member method code with example usage: obj.node_update(x, messages) and returns: new_x, unknown