function maxPool_(x, filterSize, strides, pad, dimRoundingMode) {
    const $x = (0, _tensorUtilEnv.convertToTensor)(x, "x", "maxPool");
    const dilations = 1;
    let x4D = $x;
    let reshapedTo4D = false;
    if ($x.rank === 3) {
        reshapedTo4D = true;
        x4D = (0, _reshape.reshape)($x, [
            1,
            $x.shape[0],
            $x.shape[1],
            $x.shape[2]
        ]);
    }
    _util.assert(x4D.rank === 4, ()=>`Error in maxPool: input must be rank 4 but got rank ${x4D.rank}.`);
    _util.assert(_convUtil.eitherStridesOrDilationsAreOne(strides, dilations), ()=>"Error in maxPool: Either strides or dilations must be 1. " + `Got strides ${strides} and dilations '${dilations}'`);
    _convUtil.checkPadOnDimRoundingMode("maxPool", pad, dimRoundingMode);
    const inputs = {
        x: x4D
    };
    const attrs = {
        filterSize,
        strides,
        pad,
        dimRoundingMode
    };
    // tslint:disable-next-line: no-unnecessary-type-assertion
    const res = (0, _engine.ENGINE).runKernel((0, _kernelNames.MaxPool), inputs, attrs);
    if (reshapedTo4D) return (0, _reshape.reshape)(res, [
        res.shape[1],
        res.shape[2],
        res.shape[3]
    ]);
    return res;
}
Computes the 2D max pooling of an image.

@param x The input tensor, of rank 4 or rank 3 of shape
    `[batch, height, width, inChannels]`. If rank 3, batch of 1 is assumed.
@param filterSize The filter size: `[filterHeight, filterWidth]`. If
    `filterSize` is a single number, then `filterHeight == filterWidth`.
@param strides The strides of the pooling: `[strideHeight, strideWidth]`. If
    `strides` is a single number, then `strideHeight == strideWidth`.
@param dilations The dilation rates: `[dilationHeight, dilationWidth]`
    in which we sample input values across the height and width dimensions
    in dilated pooling. Defaults to `[1, 1]`. If `dilations` is a single
    number, then `dilationHeight == dilationWidth`. If it is greater than
    1, then all values of `strides` must be 1.
@param pad The type of padding algorithm.
   - `same` and stride 1: output will be of same size as input,
      regardless of filter size.
   - `valid`: output will be smaller than input if filter is larger
      than 1x1.
   - For more info, see this guide:
    [https://www.tensorflow.org/api_docs/python/tf/nn/convolution](
         https://www.tensorflow.org/api_docs/python/tf/nn/convolution)
@param dimRoundingMode A string from: 'ceil', 'round', 'floor'. If none is
    provided, it will default to truncate.