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 __repr__(self):
      return "{}(kernel_size={}, stride={})".format(
          self.__class__.__name__, self.kernel_size, self.stride
      )
  
file_path: ml-cvnets/cvnets/layers/pooling.py
imports: from typing import Optional
  from torch import Tensor, nn
label_desc: Use image node_id 2 for calling the MaxPool2d obj's underlying member method code with example usage: obj.__repr__() and returns: str