code: def __init__(self, dataset, num_layers, hidden, ratio=0.25):
      super().__init__()
  
      num_nodes = ceil(ratio * dataset[0].num_nodes)
      self.embed_block1 = Block(dataset.num_features, hidden, hidden)
      self.pool_block1 = Block(dataset.num_features, hidden, num_nodes)
  
      self.embed_blocks = torch.nn.ModuleList()
      self.pool_blocks = torch.nn.ModuleList()
      for i in range((num_layers // 2) - 1):
          num_nodes = ceil(ratio * num_nodes)
          self.embed_blocks.append(Block(hidden, hidden, hidden))
          self.pool_blocks.append(Block(hidden, hidden, num_nodes))
  
      self.jump = JumpingKnowledge(mode="cat")
      self.lin1 = Linear((len(self.embed_blocks) + 1) * hidden, hidden)
      self.lin2 = Linear(hidden, dataset.num_classes)
  
file_path: pytorch_geometric/benchmark/kernel/diff_pool.py
imports: from math import ceil
  import torch
  import torch.nn.functional
  from torch.nn import Linear
  from torch_geometric.nn import DenseSAGEConv, JumpingKnowledge, dense_diff_pool
label_desc: Use image node_id 1 to create a new DiffPool object from inherited base classes: torch.nn with example: obj = DiffPool(dataset, num_layers, hidden, ratio)