class_docstr: create a backbone-based generator:
  This is simply an encoder
  (can be used in classification, regression, metric learning and so one)
code: def _save_sampling_and_search(self, down_conv):
      sampler = getattr(down_conv, "sampler", None)
      if is_list(sampler):
          self._spatial_ops_dict["sampler"] = (
              sampler + self._spatial_ops_dict["sampler"]
          )
      else:
          self._spatial_ops_dict["sampler"] = [
              sampler
          ] + self._spatial_ops_dict["sampler"]
  
      neighbour_finder = getattr(down_conv, "neighbour_finder", None)
      if is_list(neighbour_finder):
          self._spatial_ops_dict["neighbour_finder"] = (
              neighbour_finder
              + self._spatial_ops_dict["neighbour_finder"]
          )
      else:
          self._spatial_ops_dict["neighbour_finder"] = [
              neighbour_finder
          ] + self._spatial_ops_dict["neighbour_finder"]
  
imports: from torch import nn
  from torch_geometric.nn import global_max_pool, global_mean_pool, fps, radius, knn_interpolate
  from torch.nn import Linear, ReLU, LeakyReLU, BatchNorm1d, Dropout
  from omegaconf.listconfig import ListConfig
  from omegaconf.dictconfig import DictConfig
  import logging
  from torch_points3d.datasets.base_dataset import BaseDataset
  from torch_points3d.models.base_model import BaseModel
  from torch_points3d.models.base_architectures import BaseFactory
  from torch_points3d.core.common_modules.base_modules import Identity
  from torch_points3d.core.losses import instantiate_loss_or_miner
  from torch_points3d.utils.config import is_list
label_desc: Use image node_id 1 for calling the BackboneBasedModel obj's underlying member method code with example usage: obj._save_sampling_and_search(down_conv) without return types