class_docstr: Defines the Unet submodule with skip connection.
  X -------------------identity----------------------
  |-- downsampling -- |submodule| -- upsampling --|
class_docstr_tok: ["Defines","the","Unet","submodule","with","skip","connection",".","X","--","--","--","--","--","--","--","--","--","-identity","--","--","--","--","--","--","--","--","--","--","--","|","--","downsampling","--","|submodule|","--","upsampling","--","|"]
docstr: Construct a Unet submodule with skip connections.
  Parameters:
      args_up -- arguments for up convs
      args_down -- arguments for down convs
      args_innermost -- arguments for innermost
      submodule (UnetSkipConnectionBlock) -- previously defined submodules
      outermost (bool)    -- if this module is the outermost module
      innermost (bool)    -- if this module is the innermost module
code: def __init__(
      self,
      args_up=None,
      args_down=None,
      args_innermost=None,
      modules_lib=None,
      submodule=None,
      outermost=False,
      innermost=False,
  ):
      """Construct a Unet submodule with skip connections.
      Parameters:
          args_up -- arguments for up convs
          args_down -- arguments for down convs
          args_innermost -- arguments for innermost
          submodule (UnetSkipConnectionBlock) -- previously defined submodules
          outermost (bool)    -- if this module is the outermost module
          innermost (bool)    -- if this module is the innermost module
      """
      super(UnetSkipConnectionBlock, self).__init__()
  
      self.outermost = outermost
      self.innermost = innermost
  
      if innermost:
          assert outermost == False
          module_name = self.get_from_kwargs(
              args_innermost, "module_name"
          )
          inner_module_cls = getattr(modules_lib, module_name)
          self.inner = inner_module_cls(**args_innermost)
          upconv_cls = self.get_from_kwargs(args_up, "up_conv_cls")
          self.up = upconv_cls(**args_up)
      else:
          downconv_cls = self.get_from_kwargs(
              args_down, "down_conv_cls"
          )
          upconv_cls = self.get_from_kwargs(args_up, "up_conv_cls")
          downconv = downconv_cls(**args_down)
          upconv = upconv_cls(**args_up)
  
          self.down = downconv
          self.submodule = submodule
          self.up = upconv
  
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
  import copy
  from torch_points3d.datasets.base_dataset import BaseDataset
  from torch_points3d.models.base_model import BaseModel
  from torch_points3d.core.common_modules.base_modules import Identity
  from torch_points3d.utils.config import is_list
label_desc: Use image node_id 2 to create a new UnetSkipConnectionBlock object from inherited base classes: nn with example: obj = UnetSkipConnectionBlock(args_up, args_down, args_innermost, modules_lib, submodule, outermost, innermost)