code: def test_DownsampleFactorMaxPaddingStride_grad(self):
      rng = np.random.RandomState(utt.fetch_seed())
      # maxpool, stride, pad, input sizes
      examples = (
          ((10,), (5,), (3,), (2,)),
          ((10,), (5,), (3,), (2, 2)),
          ((10,), (5,), (3,), (1, 1, 2)),
          ((10, 10), (5, 3), (3, 2), (1, 1, 2, 2)),
          ((10, 5), (3, 5), (2, 3), (1, 1, 2, 1)),
          ((5, 5), (3, 3), (3, 3), (1, 1, 2, 2)),
          ((5, 5, 5), (3, 3, 3), (3, 3, 3), (1, 1, 2, 2, 2)),
      )
      # average_inc_pad and average_exc_pad do not
      # support grad with padding
      for mode in ["max", "sum"]:
          for example in examples:
              (maxpoolshp, stridesize, padsize, inputsize) = example
              imval = rng.rand(*inputsize) * 10.0
  
              def mp(input):
                  return Pool(
                      ndim=len(maxpoolshp),
                      ignore_border=True,
                      mode=mode,
                  )(input, maxpoolshp, stridesize, padsize)
  
              utt.verify_grad(mp, [imval], rng=rng)
  
imports: from __future__ import absolute_import, print_function, division
  from nose.plugins.skip import SkipTest
  from parameterized import parameterized
  from itertools import product
  import os
  import unittest
  from six import reraise
  from six.moves import cPickle
  import six.moves.builtins
  import sys
  import numpy
  import theano
  import theano.tensor
  from theano.tests import unittest_tools
  from theano.tensor.signal.pool import Pool, pool_2d, pool_3d, MaxPoolGrad, AveragePoolGrad, max_pool_2d_same_size, DownsampleFactorMaxGradGrad
  from theano import function
label_desc: Use image node_id 12 for calling the TestDownsampleFactorMax obj's underlying member method code with example usage: obj.test_DownsampleFactorMaxPaddingStride_grad() and returns: Pool