code: def _build_encoder(self):
      if self._config:
          model_config = self._config
      else:
          path_to_model = os.path.join(
              PATH_TO_CONFIG,
              "encoder_{}.yaml".format(self.num_layers),
          )
          model_config = OmegaConf.load(path_to_model)
      ModelFactory.resolve_model(
          model_config, self.num_features, self._kwargs
      )
      modules_lib = sys.modules[__name__]
      return SparseConv3dEncoder(
          model_config, None, None, modules_lib, **self.kwargs
      )
  
imports: import os
  import sys
  from omegaconf import DictConfig, OmegaConf
  import logging
  import torch
  from torch_geometric.data import Batch
  from torch_points3d.applications.modelfactory import ModelFactory
  import torch_points3d.modules.SparseConv3d
  from torch_points3d.core.base_conv.message_passing import *
  from torch_points3d.modules.SparseConv3d.modules import *
  from torch_points3d.core.base_conv.partial_dense import *
  from torch_points3d.models.base_architectures.unet import UnwrappedUnetBasedModel
  from torch_points3d.core.common_modules.base_modules import MLP
  from .utils import extract_output_nc
label_desc: Use image node_id 2 for calling the SparseConv3dFactory obj's underlying member method code with example usage: obj._build_encoder() and returns: SparseConv3dEncoder