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_multiplier
output 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(3, 3, activation='relu')(x)
print(y.shape)
(4, 8, 8, 36)
Methods
from_config
@classmethod
from_config( config )
Creates a layer from its config.
This method is the reverse of get_config
,
capable of instantiating the same layer from the config
dictionary. It does not handle layer connectivity
(handled by Network), nor weights (handled by set_weights
).
Args | |
---|---|
config
|
A Python dictionary, typically the output of get_config. |
Returns | |
---|---|
A layer instance. |
symbolic_call
symbolic_call(
*args, **kwargs
)