code: def __init__(
      self,
      output_classes,
      input_dims=3,
      num_points=2048,
      use_transform=True,
  ):
      super(PointNetPartSeg, self).__init__()
      self.input_dims = input_dims
  
      self.conv1 = nn.ModuleList()
      self.conv1.append(nn.Conv1d(input_dims, 64, 1))
      self.conv1.append(nn.Conv1d(64, 128, 1))
      self.conv1.append(nn.Conv1d(128, 128, 1))
  
      self.bn1 = nn.ModuleList()
      self.bn1.append(nn.BatchNorm1d(64))
      self.bn1.append(nn.BatchNorm1d(128))
      self.bn1.append(nn.BatchNorm1d(128))
  
      self.conv2 = nn.ModuleList()
      self.conv2.append(nn.Conv1d(128, 512, 1))
  
      self.bn2 = nn.ModuleList()
      self.bn2.append(nn.BatchNorm1d(512))
  
      self.conv_max = nn.Conv1d(512, 2048, 1)
      self.bn_max = nn.BatchNorm1d(2048)
  
      self.maxpool = nn.MaxPool1d(num_points)
      self.pool_feat_len = 2048
  
      self.conv3 = nn.ModuleList()
      self.conv3.append(
          nn.Conv1d(2048 + 64 + 128 * 3 + 512 + 16, 256, 1)
      )
      self.conv3.append(nn.Conv1d(256, 256, 1))
      self.conv3.append(nn.Conv1d(256, 128, 1))
  
      self.bn3 = nn.ModuleList()
      self.bn3.append(nn.BatchNorm1d(256))
      self.bn3.append(nn.BatchNorm1d(256))
      self.bn3.append(nn.BatchNorm1d(128))
  
      self.conv_out = nn.Conv1d(128, output_classes, 1)
  
      self.use_transform = use_transform
      if use_transform:
          self.transform1 = TransformNet(self.input_dims)
          self.trans_bn1 = nn.BatchNorm1d(self.input_dims)
          self.transform2 = TransformNet(128)
          self.trans_bn2 = nn.BatchNorm1d(128)
  
file_path: dgl/examples/pytorch/pointcloud/pointnet/pointnet_partseg.py
imports: import numpy
  import torch
  import torch.nn
  import torch.nn.functional
  from torch.autograd import Variable
label_desc: Use image node_id 1 to create a new PointNetPartSeg object from inherited base classes: nn with example: obj = PointNetPartSeg(output_classes, input_dims, num_points, use_transform)