def __init__(self, kernel_size, stride, pad_mode): name = self.__class__.__name__ super(_PoolNd, self).__init__() validator.check_type('kernel_size', kernel_size, [int, tuple]) validator.check_type('stride', stride, [int, tuple]) self.pad_mode = validator.check_string('pad_mode', pad_mode.upper(), ['VALID', 'SAME']) if isinstance(kernel_size, int): validator.check_integer("kernel_size", kernel_size, 1, Rel.GE) else: if (len(kernel_size) != 2 or (not isinstance(kernel_size[0], int)) or (not isinstance(kernel_size[1], int)) or kernel_size[0] <= 0 or kernel_size[1] <= 0): raise ValueError( f'The kernel_size passed to cell {name} should be an positive int number or' f'a tuple of two positive int numbers, but got {kernel_size}' ) self.kernel_size = kernel_size if isinstance(stride, int): validator.check_integer("stride", stride, 1, Rel.GE) else: if (len(stride) != 2 or (not isinstance(stride[0], int)) or (not isinstance(stride[1], int)) or stride[0] <= 0 or stride[1] <= 0): raise ValueError( f'The stride passed to cell {name} should be an positive int number or' f'a tuple of two positive int numbers, but got {stride}') self.stride = stride
def __init__(self, kernel_size=1, stride=1, pad_mode="VALID", padding=0): max_pool = P.MaxPool(ksize=kernel_size, strides=stride, padding=pad_mode) self.is_autodiff_backend = False if self.is_autodiff_backend: # At present, pad mode of max pool is not unified, so it is a temporarily avoided pad_mode = validator.check_string('pad_mode', pad_mode.lower(), ['valid', 'same']) max_pool = P.MaxPoolWithArgmax(window=kernel_size, stride=stride, pad_mode=pad_mode, pad=padding) super(MaxPool2d, self).__init__(kernel_size, stride, pad_mode, padding, max_pool)