code: def __init__(self, option, model_type, dataset, modules):
      # call the initialization method of UnetBasedModel
      super().__init__(option)
      self._weight_classes = dataset.weight_classes
      self.backbone = SparseConv3d(
          "unet",
          dataset.feature_dimension,
          config=option.backbone,
          backend=option.get("backend", "minkowski"),
      )
      self._supports_mixed = sp3d.nn.get_backend() == "torchsparse"
      self.head = nn.Sequential(
          nn.Linear(self.backbone.output_nc, dataset.num_classes)
      )
      self.loss_names = ["loss_seg"]
      self.visual_names = ["data_visual"]
  
file_path: torch-points3d/torch_points3d/models/segmentation/sparseconv3d.py
imports: import logging
  import torch.nn.functional
  import torch.nn
  import torchsparse
  import torch
  from torch_points3d.models.base_model import BaseModel
  from torch_points3d.datasets.segmentation import IGNORE_LABEL
  from torch_points3d.applications.sparseconv3d import SparseConv3d
  import torch_points3d.modules.SparseConv3d
  from torch_points3d.core.common_modules import FastBatchNorm1d, Seq
label_desc: Use image node_id 1 to create a new APIModel object from inherited base classes: BaseModel with example: obj = APIModel(option, model_type, dataset, modules)