Missed TensorFlow Dev Summit? Check out the video playlist.

# tf.compat.v1.nn.erosion2d

Computes the grayscale erosion of 4-D `value` and 3-D `kernel` tensors.

``````tf.compat.v1.nn.erosion2d(
value, kernel, strides, rates, padding, name=None
)
``````

The `value` tensor has shape `[batch, in_height, in_width, depth]` and the `kernel` tensor has shape `[kernel_height, kernel_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 erosion is given by:

``````output[b, y, x, c] =
min_{dy, dx} value[b,
strides * y - rates * dy,
strides * x - rates * dx,
c] -
kernel[dy, dx, c]
``````

Duality: The erosion of `value` by the `kernel` is equal to the negation of the dilation of `-value` by the reflected `kernel`.

#### Args:

• `value`: A `Tensor`. 4-D with shape `[batch, in_height, in_width, depth]`.
• `kernel`: A `Tensor`. Must have the same type as `value`. 3-D with shape `[kernel_height, kernel_width, depth]`.
• `strides`: A list of `ints` that has length `>= 4`. 1-D of length 4. The stride of the sliding window for each dimension of the input tensor. Must be: `[1, stride_height, stride_width, 1]`.
• `rates`: A list of `ints` that has length `>= 4`. 1-D of length 4. The input stride for atrous morphological dilation. Must be: `[1, rate_height, rate_width, 1]`.
• `padding`: A `string` from: `"SAME", "VALID"`. The type of padding algorithm to use.
• `name`: A name for the operation (optional). If not specified "erosion2d" is used.

#### Returns:

A `Tensor`. Has the same type as `value`. 4-D with shape `[batch, out_height, out_width, depth]`.

#### Raises:

• `ValueError`: If the `value` depth does not match `kernel`' shape, or if padding is other than `'VALID'` or `'SAME'`.