code: def __init__(self, in_channels, out_channels, hidden_channels=32):
      super().__init__()
  
      self.conv1 = GCNConv(in_channels, hidden_channels)
      num_nodes = ceil(0.5 * avg_num_nodes)
      self.pool1 = DMoNPooling(
          [hidden_channels, hidden_channels], num_nodes
      )
  
      self.conv2 = DenseGraphConv(hidden_channels, hidden_channels)
      num_nodes = ceil(0.5 * num_nodes)
      self.pool2 = DMoNPooling(
          [hidden_channels, hidden_channels], num_nodes
      )
  
      self.conv3 = DenseGraphConv(hidden_channels, hidden_channels)
  
      self.lin1 = Linear(hidden_channels, hidden_channels)
      self.lin2 = Linear(hidden_channels, out_channels)
  
file_path: pytorch_geometric/examples/proteins_dmon_pool.py
imports: import os.path
  import time
  from math import ceil
  import torch
  import torch.nn.functional
  from torch.nn import Linear
  from torch_geometric.datasets import TUDataset
  from torch_geometric.loader import DataLoader
  from torch_geometric.nn import DenseGraphConv, DMoNPooling, GCNConv
  from torch_geometric.utils import to_dense_adj, to_dense_batch
label_desc: Use image node_id 1 to create a new Net object from inherited base classes: torch.nn with example: obj = Net(in_channels, out_channels, hidden_channels)