# tf.nn.dilation2d

Computes the grayscale dilation of 4-D `input` and 3-D `filters` tensors.

The `input` tensor has shape `[batch, in_height, in_width, depth]` and the `filters` tensor has shape `[filter_height, filter_width, depth]`, i.e., each input channel is processed independently of the others with its own structuring function. The `output` tensor has shape `[batch, out_height, out_width, depth]`. The spatial dimensions of the output tensor depend on the `padding` algorithm. We currently only support the default "NHWC" `data_format`.

In detail, the grayscale morphological 2-D dilation is the max-sum correlation (for consistency with `conv2d`, we use unmirrored filters):

``````output[b, y, x, c] =
max_{dy, dx} input[b,
strides * y + rates * dy,
strides * x + rates * dx,
c] +
filters[dy, dx, c]
``````

Max-pooling is a special case when the filter has size equal to the pooling kernel size and contains all zeros.

Note on duality: The dilation of `input` by the `filters` is equal to the negation of the erosion of `-input` by the reflected `filters`.

`input` A `Tensor`. Must be one of the following types: `float32`, `float64`, `int32`, `uint8`, `int16`, `int8`, `int64`, `bfloat16`, `uint16`, `half`, `uint32`, `uint64`. 4-D with shape `[batch, in_height, in_width, depth]`.
`filters` A `Tensor`. Must have the same type as `input`. 3-D with shape `[filter_height, filter_width, depth]`.
`strides` A list of `ints` that has length `>= 4`. The stride of the sliding window for each dimension of the input tensor. Must be: `[1, stride_height, stride_width, 1]`.
`padding` A `string` from: `"SAME", "VALID"`. The type of padding algorithm to use.
`data_format` A `string`, only `"NHWC"` is currently supported.
`dilations` A list of `ints` that has length `>= 4`. The input stride for atrous morphological dilation. Must be: `[1, rate_height, rate_width, 1]`.
`name` A name for the operation (optional).

A `Tensor`. Has the same type as `input`.