code: def __init__(
      self,
      down_conv_nn=[],
      kernel_sizes=[],
      strides=[],
      dilations=[],
      kernel_size=3,
      stride=1,
      dilation=1,
      norm_layer=ME.MinkowskiBatchNorm,
      activation=ME.MinkowskiReLU,
      bn_momentum=0.1,
      dimension=-1,
      down_stride=2,
      **kwargs,
  ):
      super(ResnetBlockDown, self).__init__(
          down_conv_nn[0],
          down_conv_nn[1],
          down_conv_nn[2],
          kernel_sizes=kernel_sizes,
          strides=strides,
          dilations=dilations,
          kernel_size=kernel_size,
          stride=stride,
          dilation=dilation,
          norm_layer=norm_layer,
          activation=activation,
          bn_momentum=bn_momentum,
          dimension=dimension,
      )
  
      self.downsample = nn.Sequential(
          ME.MinkowskiConvolution(
              down_conv_nn[0],
              down_conv_nn[2],
              kernel_size=2,
              stride=down_stride,
              dimension=dimension,
          ),
          ME.MinkowskiBatchNorm(down_conv_nn[2]),
      )
  
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 ResnetBlockDown object from inherited base classes: BaseResBlock with example: obj = ResnetBlockDown(down_conv_nn, kernel_sizes, strides, dilations, kernel_size, stride, dilation, norm_layer, activation, bn_momentum, dimension, down_stride)