code: def test_fprop_maxpool2d(self):
      pool_layer = layers.MaxPool2D(
          pool_size=(2, 2),
          strides=(1, 1),
          padding=PaddingMode.valid,
          maxpool_deeplift_mode=MaxPoolDeepLiftMode.gradient,
          data_format="channels_last",
      )
      self.create_small_net_with_pool_layer(
          pool_layer, outputs_per_channel=9
      )
  
      func = compile_func(
          [self.input_layer.get_activation_vars()],
          self.pool_layer.get_activation_vars(),
      )
      np.testing.assert_almost_equal(
          func([self.reference_inps[0], self.reference_inps[0] - 1]),
          np.array(
              [
                  [
                      [[1, 2, 3], [5, 5, 4], [6, 7, 8]],
                      [[2, 3, 4], [6, 6, 5], [7, 8, 9]],
                  ],
                  [
                      [[0, 1, 2], [4, 4, 3], [5, 6, 7]],
                      [[1, 2, 3], [5, 5, 4], [6, 7, 8]],
                  ],
              ]
          ).transpose(0, 2, 3, 1),
      )
  
imports: from __future__ import division
  from __future__ import print_function
  from __future__ import absolute_import
  import unittest
  from unittest import skip
  import sys
  import os
  import numpy
  import deeplift.layers
  from deeplift.layers import DenseMxtsMode
  from deeplift.layers import MaxPoolDeepLiftMode
  from deeplift.layers.convolutional import PaddingMode
  from deeplift.util import compile_func
  import itertools
label_desc: Use image node_id 3 for calling the TestPool obj's underlying member method code with example usage: obj.test_fprop_maxpool2d() without return types