class_docstr: The Relation Shape Convolution layer from "Relation-Shape Convolutional Neural Network for Point Cloud Analysis"
  https://arxiv.org/pdf/1904.07601
  
  local_nn - an MLP which is applied to the relation vector h_ij between points i and j to determine
  the weights applied to each element of the feature for x_j
  
  global_nn - an optional MPL for channel-raising following the convolution
class_docstr_tok: ["The","Relation","Shape","Convolution","layer","from","``","Relation-Shape","Convolutional","Neural","Network","for","Point","Cloud","Analysis","''","https",":","\/\/arxiv.org\/pdf\/1904.07601","local_nn","-","an","MLP","which","is","applied","to","the","relation","vector","h_ij","between","points","i","and","j","to","determine","the","weights","applied","to","each","element","of","the","feature","for","x_j","global_nn","-","an","optional","MPL","for","channel-raising","following","the","convolution"]
code: def __init__(
      self,
      local_nn,
      activation=ReLU(),
      global_nn=None,
      aggr="max",
      **kwargs,
  ):
      super(Convolution, self).__init__(aggr=aggr)
      self.local_nn = MLP(local_nn)
      self.activation = activation
      self.global_nn = MLP(global_nn) if global_nn is not None else None
  
file_path: torch-points3d/torch_points3d/modules/RSConv/message_passing.py
imports: import torch
  from torch.nn import ReLU
  from torch_geometric.nn import MessagePassing
  from torch_points3d.core.base_conv.message_passing import *
  from torch_points3d.core.spatial_ops import *
label_desc: Use image node_id 1 to create a new Convolution object from inherited base classes: MessagePassing with example: obj = Convolution(local_nn, activation, global_nn, aggr)