code: def __init__(self, input_dim, n_neighbors, transformer_dim=None):
      super(PointTransformerBlock, self).__init__()
      if transformer_dim is None:
          transformer_dim = input_dim
      self.fc1 = nn.Linear(input_dim, transformer_dim)
      self.fc2 = nn.Linear(transformer_dim, input_dim)
      self.fc_delta = nn.Sequential(
          nn.Linear(3, transformer_dim),
          nn.ReLU(),
          nn.Linear(transformer_dim, transformer_dim),
      )
      self.fc_gamma = nn.Sequential(
          nn.Linear(transformer_dim, transformer_dim),
          nn.ReLU(),
          nn.Linear(transformer_dim, transformer_dim),
      )
      self.w_qs = nn.Linear(
          transformer_dim, transformer_dim, bias=False
      )
      self.w_ks = nn.Linear(
          transformer_dim, transformer_dim, bias=False
      )
      self.w_vs = nn.Linear(
          transformer_dim, transformer_dim, bias=False
      )
      self.n_neighbors = n_neighbors
  
imports: import numpy
  import torch
  from helper import index_points, square_distance, TransitionDown, TransitionUp
  from torch import nn
label_desc: Use image node_id 1 to create a new PointTransformerBlock object from inherited base classes: nn with example: obj = PointTransformerBlock(input_dim, n_neighbors, transformer_dim)