code: def __init__(
      self, in_channels, hidden_channels, out_channels, num_layers
  ):
      super().__init__()
      self.convs = torch.nn.ModuleList()
      self.batch_norms = torch.nn.ModuleList()
      self.convs.append(SAGEConv(in_channels, hidden_channels))
      self.batch_norms.append(BatchNorm(hidden_channels))
      for _ in range(num_layers - 2):
          self.convs.append(SAGEConv(hidden_channels, hidden_channels))
          self.batch_norms.append(BatchNorm(hidden_channels))
      self.convs.append(SAGEConv(hidden_channels, out_channels))
  
file_path: pytorch_geometric/examples/cluster_gcn_ppi.py
imports: import os.path
  import time
  import torch
  import torch.nn.functional
  from sklearn.metrics import f1_score
  from torch_geometric.data import Batch
  from torch_geometric.datasets import PPI
  from torch_geometric.loader import ClusterData, ClusterLoader, DataLoader
  from torch_geometric.nn import BatchNorm, SAGEConv
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, hidden_channels, out_channels, num_layers)