class_docstr: Input shape: (B, C_in, npoint, nsample)
  Output shape: (B, C_out, npoint)
class_docstr_tok: ["Input","shape",":","(","B",",","C_in",",","npoint",",","nsample",")","Output","shape",":","(","B",",","C_out",",","npoint",")"]
code: def __init__(
      self,
      mapping=None,
      first_layer=False,
      radius=None,
      activation=nn.ReLU(inplace=True),
  ):
      super(OriginalRSConv, self).__init__()
  
      self.nn = nn.ModuleList()
  
      self._radius = radius
  
      self.mapping_func1 = mapping[0]
      self.mapping_func2 = mapping[1]
      self.cr_mapping = mapping[2]
  
      self.first_layer = first_layer
  
      if first_layer:
          self.xyz_raising = mapping[3]
          self.bn_xyz_raising = nn.BatchNorm2d(
              self.xyz_raising.out_channels
          )
          self.nn.append(self.bn_xyz_raising)
  
      self.bn_mapping = nn.BatchNorm2d(self.mapping_func1.out_channels)
      self.bn_rsconv = nn.BatchNorm2d(self.cr_mapping.in_channels)
      self.bn_channel_raising = nn.BatchNorm1d(
          self.cr_mapping.out_channels
      )
  
      self.nn.append(self.bn_mapping)
      self.nn.append(self.bn_rsconv)
      self.nn.append(self.bn_channel_raising)
  
      self.activation = activation
  
imports: import logging
  import torch
  from torch.nn import Sequential
  import torch.nn
  import torch.nn.functional
  from torch.nn import Conv1d
  import torch_points_kernels
  from torch_points3d.core.base_conv.dense import *
  from torch_points3d.core.common_modules.dense_modules import MLP2D
  from torch_points3d.core.spatial_ops import DenseFPSSampler, DenseRadiusNeighbourFinder
  from torch_points3d.utils.colors import COLORS
label_desc: Use image node_id 1 to create a new OriginalRSConv object from inherited base classes: nn with example: obj = OriginalRSConv(mapping, first_layer, radius, activation)