View source on GitHub
|
2D depthwise convolution layer.
Inherits From: Layer, Operation
tf.keras.layers.DepthwiseConv2D(
kernel_size,
strides=(1, 1),
padding='valid',
depth_multiplier=1,
data_format=None,
dilation_rate=(1, 1),
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
)
Used in the notebooks
| Used in the guide |
|---|
Depthwise convolution is a type of convolution in which each input channel is convolved with a different kernel (called a depthwise kernel). You can understand depthwise convolution as the first step in a depthwise separable convolution.
It is implemented via the following steps:
- Split the input into individual channels.
- Convolve each channel with an individual depthwise kernel with
depth_multiplieroutput channels. - Concatenate the convolved outputs along the channels axis.
Unlike a regular 2D convolution, depthwise convolution does not mix information across different input channels.
The depth_multiplier argument determines how many filters are applied to
one input channel. As such, it controls the amount of output channels that
are generated per input channel in the depthwise step.
Input shape:
- If
data_format="channels_last": A 4D tensor with shape:(batch_size, height, width, channels) - If
data_format="channels_first": A 4D tensor with shape:(batch_size, channels, height, width)
Output shape:
- If
data_format="channels_last": A 4D tensor with shape:(batch_size, new_height, new_width, channels * depth_multiplier) - If
data_format="channels_first": A 4D tensor with shape:(batch_size, channels * depth_multiplier, new_height, new_width)
Returns | |
|---|---|
A 4D tensor representing
activation(depthwise_conv2d(inputs, kernel) + bias).
|
Raises | |
|---|---|
ValueError
|
when both strides > 1 and dilation_rate > 1.
|
Example:
x = np.random.rand(4, 10, 10, 12)y = keras.layers.DepthwiseConv2D(kernel_size=3, activation='relu')(x)print(y.shape)(4, 8, 8, 12)
Methods
from_config
@classmethodfrom_config( config )
Creates an operation from its config.
This method is the reverse of get_config, capable of instantiating the
same operation from the config dictionary.
if "dtype" in config and isinstance(config["dtype"], dict):
policy = dtype_policies.deserialize(config["dtype"])
| Args | |
|---|---|
config
|
A Python dictionary, typically the output of get_config.
|
| Returns | |
|---|---|
| An operation instance. |
View source on GitHub