function dilation2d_(x, filter, strides, pad, dilations = [
    1,
    1
], dataFormat = "NHWC") {
    const $x = (0, _tensorUtilEnv.convertToTensor)(x, "x", "dilation2d");
    const $filter = (0, _tensorUtilEnv.convertToTensor)(filter, "filter", "dilation2d");
    _util.assert($x.rank === 3 || $x.rank === 4, ()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ` + `${$x.rank}.`);
    _util.assert($filter.rank === 3, ()=>`Error in dilation2d: filter must be rank 3, but got rank ` + `${$filter.rank}.`);
    _util.assert(dataFormat === "NHWC", ()=>`Error in dilation2d: Only NHWC is currently supported, ` + `but got dataFormat of ${dataFormat}`);
    let x4D = $x;
    let reshapedTo4D = false;
    if ($x.rank === 3) {
        x4D = (0, _reshape.reshape)($x, [
            1,
            $x.shape[0],
            $x.shape[1],
            $x.shape[2]
        ]);
        reshapedTo4D = true;
    }
    _util.assert(x4D.shape[3] === $filter.shape[2], ()=>`Error in dilation2d:  input and filter must have the same depth: ${x4D.shape[3]} vs ${$filter.shape[2]}`);
    const inputs = {
        x: x4D,
        filter: $filter
    };
    const attrs = {
        strides,
        pad,
        dilations
    };
    // tslint:disable-next-line: no-unnecessary-type-assertion
    const res = (0, _engine.ENGINE).runKernel((0, _kernelNames.Dilation2D), inputs, attrs);
    if (reshapedTo4D) return (0, _reshape.reshape)(res, [
        res.shape[1],
        res.shape[2],
        res.shape[3]
    ]);
    return res;
}
Computes the grayscale dilation over the input `x`.

@param x The input tensor, rank 3 or rank 4 of shape
    `[batch, height, width, depth]`. If rank 3, batch of 1 is assumed.
@param filter The filter tensor, rank 3, of shape
    `[filterHeight, filterWidth, depth]`.
@param strides The strides of the sliding window for each dimension of the
    input tensor: `[strideHeight, strideWidth]`.
    If `strides` is a single number,
    then `strideHeight == strideWidth`.
@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 1*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 dataFormat Specify the data format of the input and output data.
     Defaults to 'NHWC'. Only 'NHWC' is currently supported. With the
     default format "NHWC", the data is stored in the order of: [batch,
     height, width, channels].
@param dilations The dilation rates: `[dilationHeight, dilationWidth]`
    in which we sample input values across the height and width dimensions
    for atrous morphological dilation. 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.

@doc {heading: 'Operations', subheading: 'Convolution'}