code: def __init__(
      self,
      inplanes,
      planes,
      stride=1,
      dilation=1,
      downsample=None,
      bn_momentum=0.1,
      dimension=-1,
  ):
      super(Bottleneck, self).__init__()
      assert dimension > 0
  
      self.conv1 = ME.MinkowskiConvolution(
          inplanes, planes, kernel_size=1, dimension=dimension
      )
      self.norm1 = ME.MinkowskiBatchNorm(planes, momentum=bn_momentum)
  
      self.conv2 = ME.MinkowskiConvolution(
          planes,
          planes,
          kernel_size=3,
          stride=stride,
          dilation=dilation,
          dimension=dimension,
      )
      self.norm2 = ME.MinkowskiBatchNorm(planes, momentum=bn_momentum)
  
      self.conv3 = ME.MinkowskiConvolution(
          planes,
          planes * self.EXPANSION,
          kernel_size=1,
          dimension=dimension,
      )
      self.norm3 = ME.MinkowskiBatchNorm(
          planes * self.EXPANSION, momentum=bn_momentum
      )
  
      self.relu = ME.MinkowskiReLU(inplace=True)
      self.downsample = downsample
  
imports: import torch.nn
  import MinkowskiEngine
  from .common import ConvType, NormType
  from torch_points3d.utils.config import is_list
label_desc: Use image node_id 1 to create a new Bottleneck object from inherited base classes: nn with example: obj = Bottleneck(inplanes, planes, stride, dilation, downsample, bn_momentum, dimension)