# tf.keras.layers.DepthwiseConv2D

<br />

|---|---|
| [![](https://www.tensorflow.org/images/tf_logo_32px.png) TensorFlow 1 version](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/keras/layers/DepthwiseConv2D) | [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/tensorflow/tensorflow/blob/v2.2.0/tensorflow/python/keras/layers/convolutional.py#L1891-L2093) |

Depthwise separable 2D convolution.

Inherits From: [`Conv2D`](https://www.tensorflow.org/versions/r2.2/api_docs/python/tf/keras/layers/Conv2D)

#### View aliases


**Compat aliases for migration**

See
[Migration guide](https://www.tensorflow.org/guide/migrate) for
more details.

[`tf.compat.v1.keras.layers.DepthwiseConv2D`](https://www.tensorflow.org/api_docs/python/tf/keras/layers/DepthwiseConv2D)

<br />

    tf.keras.layers.DepthwiseConv2D(
        kernel_size, strides=(1, 1), padding='valid', depth_multiplier=1,
        data_format=None, activation=None, use_bias=True,
        depthwise_initializer='glorot_uniform', bias_initializer='zeros',
        depthwise_regularizer=None, bias_regularizer=None, activity_regularizer=None,
        depthwise_constraint=None, bias_constraint=None, **kwargs
    )

Depthwise Separable convolutions consists in performing
just the first step in a depthwise spatial convolution
(which acts on each input channel separately).
The `depth_multiplier` argument controls how many
output channels are generated per input channel in the depthwise step.

<br />

<br />

<br />

| ## Arguments ||
|---|---|
| `kernel_size` | An integer or tuple/list of 2 integers, specifying the height and width of the 2D convolution window. Can be a single integer to specify the same value for all spatial dimensions. |
| `strides` | An integer or tuple/list of 2 integers, specifying the strides of the convolution along the height and width. Can be a single integer to specify the same value for all spatial dimensions. Specifying any stride value != 1 is incompatible with specifying any `dilation_rate` value != 1. |
| `padding` | one of `'valid'` or `'same'` (case-insensitive). |
| `depth_multiplier` | The number of depthwise convolution output channels for each input channel. The total number of depthwise convolution output channels will be equal to `filters_in * depth_multiplier`. |
| `data_format` | A string, one of `channels_last` (default) or `channels_first`. The ordering of the dimensions in the inputs. `channels_last` corresponds to inputs with shape `(batch_size, height, width, channels)` while `channels_first` corresponds to inputs with shape `(batch_size, channels, height, width)`. It defaults to the `image_data_format` value found in your Keras config file at `~/.keras/keras.json`. If you never set it, then it will be 'channels_last'. |
| `activation` | Activation function to use. If you don't specify anything, no activation is applied ( see [`keras.activations`](https://www.tensorflow.org/versions/r2.2/api_docs/python/tf/keras/activations)). |
| `use_bias` | Boolean, whether the layer uses a bias vector. |
| `depthwise_initializer` | Initializer for the depthwise kernel matrix ( see [`keras.initializers`](https://www.tensorflow.org/versions/r2.2/api_docs/python/tf/keras/initializers)). |
| `bias_initializer` | Initializer for the bias vector ( see [`keras.initializers`](https://www.tensorflow.org/versions/r2.2/api_docs/python/tf/keras/initializers)). |
| `depthwise_regularizer` | Regularizer function applied to the depthwise kernel matrix (see [`keras.regularizers`](https://www.tensorflow.org/versions/r2.2/api_docs/python/tf/keras/regularizers)). |
| `bias_regularizer` | Regularizer function applied to the bias vector ( see [`keras.regularizers`](https://www.tensorflow.org/versions/r2.2/api_docs/python/tf/keras/regularizers)). |
| `activity_regularizer` | Regularizer function applied to the output of the layer (its 'activation') ( see [`keras.regularizers`](https://www.tensorflow.org/versions/r2.2/api_docs/python/tf/keras/regularizers)). |
| `depthwise_constraint` | Constraint function applied to the depthwise kernel matrix ( see [`keras.constraints`](https://www.tensorflow.org/versions/r2.2/api_docs/python/tf/keras/constraints)). |
| `bias_constraint` | Constraint function applied to the bias vector ( see [`keras.constraints`](https://www.tensorflow.org/versions/r2.2/api_docs/python/tf/keras/constraints)). |

<br />

#### Input shape:

4D tensor with shape:
`[batch_size, channels, rows, cols]` if data_format='channels_first'
or 4D tensor with shape:
`[batch_size, rows, cols, channels]` if data_format='channels_last'.

#### Output shape:

4D tensor with shape:
`[batch_size, filters, new_rows, new_cols]` if data_format='channels_first'
or 4D tensor with shape:
`[batch_size, new_rows, new_cols, filters]` if data_format='channels_last'.
`rows` and `cols` values might have changed due to padding.

<br />

<br />

<br />

| ## Returns ||
|---|---|
| A tensor of rank 4 representing `activation(depthwiseconv2d(inputs, kernel) + bias)`. ||

<br />

<br />

<br />

<br />

| ## Raises ||
|---|---|
| `ValueError` | if `padding` is "causal". |
| `ValueError` | when both `strides` \> 1 and `dilation_rate` \> 1. |

<br />