class_docstr: Multiscale convolution down (also supports single scale). Convolution kernel is shared accross the scales
  
  Arguments:
      sampler  -- Strategy for sampling the input clouds
      neighbour_finder -- Multiscale strategy for finding neighbours
docstr: Implements a Dense convolution where radius_idx represents
  the indexes of the points in x and pos to be agragated into the new feature
  for each point in new_pos
  
  Arguments:
      x -- Previous features [B, C, N]
      pos -- Previous positions [B, N, 3]
      new_pos  -- Sampled positions [B, npoints, 3]
      radius_idx -- Indexes to group [B, npoints, nsample]
      scale_idx -- Scale index in multiscale convolutional layers
docstr_tok: ["Implements","a","Dense","convolution","where","radius_idx","represents","the","indexes","of","the","points","in","x","and","pos","to","be","agragated","into","the","new","feature","for","each","point","in","new_pos","Arguments",":","x","--","Previous","features","[","B",",","C",",","N","]","pos","--","Previous","positions","[","B",",","N",",","3","]","new_pos","--","Sampled","positions","[","B",",","npoints",",","3","]","radius_idx","--","Indexes","to","group","[","B",",","npoints",",","nsample","]","scale_idx","--","Scale","index","in","multiscale","convolutional","layers"]
code: def conv(self, x, pos, new_pos, radius_idx, scale_idx):
      """Implements a Dense convolution where radius_idx represents
      the indexes of the points in x and pos to be agragated into the new feature
      for each point in new_pos
  
      Arguments:
          x -- Previous features [B, C, N]
          pos -- Previous positions [B, N, 3]
          new_pos  -- Sampled positions [B, npoints, 3]
          radius_idx -- Indexes to group [B, npoints, nsample]
          scale_idx -- Scale index in multiscale convolutional layers
      """
      raise NotImplementedError
  
imports: import numpy
  import torch
  from torch.nn import Linear, ReLU, LeakyReLU, BatchNorm1d, Dropout
  from torch_geometric.nn import knn_interpolate, fps, radius, global_max_pool, global_mean_pool, knn
  from torch_geometric.data import Data
  import torch_points_kernels
  from torch_points3d.core.spatial_ops import BaseMSNeighbourFinder
  from torch_points3d.core.base_conv import BaseConvolution
  from torch_points3d.core.common_modules.dense_modules import MLP2D
  from torch_points3d.utils.enums import ConvolutionFormat
  from torch_points3d.utils.model_building_utils.activation_resolver import get_activation
label_desc: Use image node_id 2 for calling the BaseDenseConvolutionDown obj's underlying member method code with example usage: obj.conv(x, pos, new_pos, radius_idx, scale_idx) without return types