code: def __init__(self, num_classes):
      super().__init__()
  
      # Input channels account for both `pos` and node features.
      self.sa1_module = SAModule(0.2, 0.2, MLP([3 + 3, 64, 64, 128]))
      self.sa2_module = SAModule(
          0.25, 0.4, MLP([128 + 3, 128, 128, 256])
      )
      self.sa3_module = GlobalSAModule(MLP([256 + 3, 256, 512, 1024]))
  
      self.fp3_module = FPModule(1, MLP([1024 + 256, 256, 256]))
      self.fp2_module = FPModule(3, MLP([256 + 128, 256, 128]))
      self.fp1_module = FPModule(3, MLP([128 + 3, 128, 128, 128]))
  
      self.mlp = MLP(
          [128, 128, 128, num_classes], dropout=0.5, norm=None
      )
  
      self.lin1 = torch.nn.Linear(128, 128)
      self.lin2 = torch.nn.Linear(128, 128)
      self.lin3 = torch.nn.Linear(128, num_classes)
  
imports: import os.path
  import torch
  import torch.nn.functional
  from pointnet2_classification import GlobalSAModule, SAModule
  from torchmetrics.functional import jaccard_index
  import torch_geometric.transforms
  from torch_geometric.datasets import ShapeNet
  from torch_geometric.loader import DataLoader
  from torch_geometric.nn import MLP, knn_interpolate
  from torch_geometric.typing import WITH_TORCH_CLUSTER
  from torch_geometric.utils import scatter
label_desc: Use image node_id 1 to create a new Net object from inherited base classes: torch.nn with example: obj = Net(num_classes)