class_docstr: Applies a 2D max pooling over a 4D input tensor.
  
  Args:
      kernel_size (Optional[int]): the size of the window to take a max over
      stride (Optional[int]): The stride of the window. Default: 2
      padding (Optional[int]): Padding to be added on both sides of the tensor. Default: 1
  
  Shape:
      - Input: :math:`(N, C, H_{in}, W_{in})` where :math:`N` is the batch size, :math:`C` is the input channels,
          :math:`H_{in}` is the input height, and :math:`W_{in}` is the input width
      - Output: :math:`(N, C, H_{out}, W_{out})` where :math:`H_{out}` is the output height, and :math:`W_{in}` is
          the output width
code: def __init__(
      self,
      kernel_size: Optional[int] = 3,
      stride: Optional[int] = 2,
      padding: Optional[int] = 1,
      *args,
      **kwargs,
  ) -> None:
      super().__init__(
          kernel_size=kernel_size, stride=stride, padding=padding
      )
  
file_path: ml-cvnets/cvnets/layers/pooling.py
imports: from typing import Optional
  from torch import Tensor, nn
label_desc: Use image node_id 1 to create a new MaxPool2d object from inherited base classes: nn with example: obj = MaxPool2d(kernel_size, stride, padding)