tf.nn.separable_conv2d
tf.nn.separable_conv2d
tf.nn.separable_conv2d
separable_conv2d( input, depthwise_filter, pointwise_filter, strides, padding, rate=None, name=None, data_format=None )
Defined in tensorflow/python/ops/nn_impl.py
.
See the guides: Layers (contrib) > Higher level ops for building neural network layers, Neural Network > Convolution
2-D convolution with separable filters.
Performs a depthwise convolution that acts separately on channels followed by a pointwise convolution that mixes channels. Note that this is separability between dimensions [1, 2]
and 3
, not spatial separability between dimensions 1
and 2
.
In detail,
output[b, i, j, k] = sum_{di, dj, q, r] input[b, strides[1] * i + di, strides[2] * j + dj, q] * depthwise_filter[di, dj, q, r] * pointwise_filter[0, 0, q * channel_multiplier + r, k]
strides
controls the strides for the depthwise convolution only, since the pointwise convolution has implicit strides of [1, 1, 1, 1]
. Must have strides[0] = strides[3] = 1
. For the most common case of the same horizontal and vertical strides, strides = [1, stride, stride, 1]
. If any value in rate
is greater than 1, we perform atrous depthwise convolution, in which case all values in the strides
tensor must be equal to 1.
Args:
-
input
: 4-DTensor
with shape according todata_format
. -
depthwise_filter
: 4-DTensor
with shape[filter_height, filter_width, in_channels, channel_multiplier]
. Containsin_channels
convolutional filters of depth 1. -
pointwise_filter
: 4-DTensor
with shape[1, 1, channel_multiplier * in_channels, out_channels]
. Pointwise filter to mix channels afterdepthwise_filter
has convolved spatially. -
strides
: 1-D of size 4. The strides for the depthwise convolution for each dimension ofinput
. -
padding
: A string, either'VALID'
or'SAME'
. The padding algorithm. See the comment here -
rate
: 1-D of size 2. The dilation rate in which we sample input values across theheight
andwidth
dimensions in atrous convolution. If it is greater than 1, then all values of strides must be 1. -
name
: A name for this operation (optional). -
data_format
: The data format for input. Either "NHWC" (default) or "NCHW".
Returns:
A 4-D Tensor
with shape according to 'data_format'. For example, with data_format="NHWC", shape is [batch, out_height, out_width, out_channels].
Raises:
-
ValueError
: If channel_multiplier * in_channels > out_channels, which means that the separable convolution is overparameterized.
© 2017 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/nn/separable_conv2d