'Create a new PoolLayer parameter object.
This then is passed as an argument to all pooling kernels.
Arguments:
op (str): "max", "avg", "l2" pooling (currently bprop only supports
max, but not avg and l2)
N (int): Number of images in mini-batch
C (int): Number of input feature maps
D (int, optional): Depth of input image.  Defaults to 1
H (int, optional): Height of input image.  Defaults to 1
W (int, optional): Width of input image.  Defaults to 1
J (int, optional): Size of feature map pooling window
(maxout n_pieces).  Defaults to 1
T (int, optional): Depth of pooling window.  Defaults to 1
R (int, optional): Height of pooling window.  Defaults to 1
S (int, optional): Width of pooling window.  Defaults to 1
pad_j (int, optional): amount of zero-padding around the fm pooling
window edge.  Defaults to 0.
pad_d (int, optional): amount of zero-padding around the depth edge
Defaults to 0.
pad_h (int, optional): amount of zero-padding around the height edge
Defaults to 0.
pad_w (int, optional): amount of zero-padding around the width edge
Defaults to 0.
str_j (int, optional): factor to step the filters by in the fm
pooling window direction.  Defaults to 1
str_d (int, optional): factor to step the filters by in the depth
direction.  Defaults to 1
str_h (int, optional): factor to step the filters by in the depth
direction.  Defaults to 1
str_w (int, optional): factor to step the filters by in the depth
direction.  Defaults to 1
Leave spatial dimensions at 1 to allow feature map pooling in the fc layers.'

@abc.abstractmethod
def pool_layer(self, dtype, op, N, C, D=1, H=1, W=1, J=1, T=1, R=1, S=1, pad_j=0, pad_d=0, pad_h=0, pad_w=0, str_j=None, str_d=None, str_h=None, str_w=None):

    raise NotImplementedError()
