code: def __init__(
      self,
      inN=None,
      outN=None,
      K=None,
      D=None,
      C1=None,
      C2=None,
      hidden_channel=None,
      *args,
      **kwargs,
  ):
      super(PointCNNConvDown, self).__init__(
          FPSSampler(outN / inN), DilatedKNNNeighbourFinder(K, D)
      )
  
      self._conv = XConv(C1, C2, 3, K, hidden_channels=hidden_channel)
  
imports: from math import ceil
  import torch
  from torch.nn import Sequential, Linear, BatchNorm1d
  from torch.nn import ELU, Conv1d
  from torch_geometric.nn import Reshape
  from torch_geometric.nn.inits import reset
  from torch_points3d.core.spatial_ops import RandomSampler, FPSSampler, DilatedKNNNeighbourFinder
  from torch_points3d.core.base_conv.message_passing import *
label_desc: Use image node_id 1 to create a new PointCNNConvDown object from inherited base classes: BaseConvolutionDown with example: obj = PointCNNConvDown(inN, outN, K, D, C1, C2, hidden_channel)