class_docstr: A down-sample module that can be used for LocalNet, based on:
  `Weakly-supervised convolutional neural networks for multimodal image registration
  <https://doi.org/10.1016/j.media.2018.07.002>`_.
  `Label-driven weakly-supervised learning for multimodal deformable image registration
  <https://arxiv.org/abs/1711.01666>`_.
  
  Adapted from:
      DeepReg (https://github.com/DeepRegNet/DeepReg)
docstr: Args:
      spatial_dims: number of spatial dimensions.
      in_channels: number of input channels.
      out_channels: number of output channels.
      kernel_size: convolution kernel size.
  Raises:
      NotImplementedError: when ``kernel_size`` is even
docstr_tok: ["Args",":","spatial_dims",":","number","of","spatial","dimensions",".","in_channels",":","number","of","input","channels",".","out_channels",":","number","of","output","channels",".","kernel_size",":","convolution","kernel","size",".","Raises",":","NotImplementedError",":","when","``","kernel_size","``","is","even"]
code: def __init__(
      self,
      spatial_dims: int,
      in_channels: int,
      out_channels: int,
      kernel_size: Sequence[int] | int,
  ) -> None:
      """
      Args:
          spatial_dims: number of spatial dimensions.
          in_channels: number of input channels.
          out_channels: number of output channels.
          kernel_size: convolution kernel size.
      Raises:
          NotImplementedError: when ``kernel_size`` is even
      """
      super().__init__()
      self.conv_block = get_conv_block(
          spatial_dims=spatial_dims,
          in_channels=in_channels,
          out_channels=out_channels,
          kernel_size=kernel_size,
      )
      self.residual_block = ResidualBlock(
          spatial_dims=spatial_dims,
          in_channels=out_channels,
          out_channels=out_channels,
          kernel_size=kernel_size,
      )
      self.max_pool = Pool[Pool.MAX, spatial_dims](kernel_size=2)
  
imports: from __future__ import annotations
  from collections.abc import Sequence
  import torch
  from torch import nn
  from torch.nn import functional
  from monai.networks.blocks import Convolution
  from monai.networks.layers import same_padding
  from monai.networks.layers.factories import Conv, Norm, Pool
label_desc: Use image node_id 1 to create a new LocalNetDownSampleBlock object from inherited base classes: nn with example: obj = LocalNetDownSampleBlock(spatial_dims, in_channels, out_channels, kernel_size)