class_docstr: cuDNN pooling implementation
class_docstr_tok: ["cuDNN","pooling","implementation"]
code: def backward(self, gy):
      func = self.func
      ksize = func.ksize
      stride = func.stride
      pad = func.pad
      pool_mode = func.get_cudnn_pool_mode()
  
      x = func.get_retained_inputs()[0].array
      y = func.get_retained_outputs()[0].array
      gx = cudnn.pooling_backward(
          x, y, gy[0], ksize, stride, pad, pool_mode
      )
      return (gx,)
  
file_path: chainer/chainer/functions/pooling/pooling_nd.py
imports: import six
  from chainer.backends import cuda
  from chainer import function_node
  from chainer.utils import conv
  from chainer.utils import conv_nd
  from chainer.utils import type_check
label_desc: Use image node_id 3 for calling the _CudnnPoolingNDImpl obj's underlying member method code with example usage: obj.backward(gy) and returns: gx