code: def __init__(self, input_dims=3, num_points=2048):
      super(TransformNet, self).__init__()
      self.conv = nn.ModuleList()
      self.conv.append(nn.Conv1d(input_dims, 64, 1))
      self.conv.append(nn.Conv1d(64, 128, 1))
      self.conv.append(nn.Conv1d(128, 1024, 1))
  
      self.bn = nn.ModuleList()
      self.bn.append(nn.BatchNorm1d(64))
      self.bn.append(nn.BatchNorm1d(128))
      self.bn.append(nn.BatchNorm1d(1024))
  
      self.maxpool = nn.MaxPool1d(num_points)
      self.pool_feat_len = 1024
  
      self.mlp2 = nn.ModuleList()
      self.mlp2.append(nn.Linear(1024, 512))
      self.mlp2.append(nn.Linear(512, 256))
  
      self.bn2 = nn.ModuleList()
      self.bn2.append(nn.BatchNorm1d(512))
      self.bn2.append(nn.BatchNorm1d(256))
  
      self.input_dims = input_dims
      self.mlp_out = nn.Linear(256, input_dims * input_dims)
  
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 TransformNet object from inherited base classes: nn with example: obj = TransformNet(input_dims, num_points)