code: def __init__(
      self,
      in_dim,
      num_layers,
      hidden,
      pool_type="sum",
      use_gate=True,
      node_update_type="residual",
      layer_norm=False,
      ogb=False,
  ):
      super(GMNet, self).__init__()
  
      self.embedding = nn.Sequential(
          nn.Linear(in_dim, hidden),
      )
  
      self.convs = torch.nn.ModuleList()
      for _ in range(num_layers):
          self.convs.append(
              GMNConv(
                  hidden,
                  [hidden * 2, hidden * 2],
                  [hidden * 2],
                  node_update_type,
                  layer_norm,
              )
          )
  
      self.readout = Readout(
          hidden, [hidden], [hidden], use_gate, pool_type
      )
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  from torch_scatter import scatter
  from torch_geometric.nn import global_add_pool, global_mean_pool, global_max_pool, GINConv
label_desc: Use image node_id 1 to create a new GMNet object from inherited base classes: nn with example: obj = GMNet(in_dim, num_layers, hidden, pool_type, use_gate, node_update_type, layer_norm, ogb)