Watch keynotes, product sessions, workshops, and more from Google I/O

# tensorflow::ops::DepthwiseConv2dNative

`#include <nn_ops.h>`

Computes a 2-D depthwise convolution given 4-D `input` and `filter` tensors.

## Summary

Given an input tensor of shape `[batch, in_height, in_width, in_channels]` and a filter / kernel tensor of shape `[filter_height, filter_width, in_channels, channel_multiplier]`, containing `in_channels` convolutional filters of depth 1, `depthwise_conv2d` applies a different filter to each input channel (expanding from 1 channel to `channel_multiplier` channels for each), then concatenates the results together. Thus, the output has `in_channels * channel_multiplier` channels.

```for k in 0..in_channels-1
for q in 0..channel_multiplier-1
output[b, i, j, k * channel_multiplier + q] =
sum_{di, dj} input[b, strides[1] * i + di, strides[2] * j + dj, k] *
filter[di, dj, k, q]
```

Must have `strides[0] = strides[3] = 1`. For the most common case of the same horizontal and vertices strides, `strides = [1, stride, stride, 1]`.

Arguments:

• scope: A Scope object
• strides: 1-D of length 4. The stride of the sliding window for each dimension of `input`.

Optional attributes (see `Attrs`):

• data_format: Specify the data format of the input and output data. With the default format "NHWC", the data is stored in the order of: [batch, height, width, channels]. Alternatively, the format could be "NCHW", the data storage order of: [batch, channels, height, width].
• dilations: 1-D tensor of length 4. The dilation factor for each dimension of `input`. If set to k > 1, there will be k-1 skipped cells between each filter element on that dimension. The dimension order is determined by the value of `data_format`, see above for details. Dilations in the batch and depth dimensions must be 1.

Returns:

• `Output`: The output tensor.

### Constructors and Destructors

`DepthwiseConv2dNative(const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input filter, const gtl::ArraySlice< int > & strides, StringPiece padding)`
`DepthwiseConv2dNative(const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input filter, const gtl::ArraySlice< int > & strides, StringPiece padding, const DepthwiseConv2dNative::Attrs & attrs)`

### Public attributes

`operation`
`Operation`
`output`
`::tensorflow::Output`

### Public functions

`node() const `
`::tensorflow::Node *`
`operator::tensorflow::Input() const `
``` ```
``` ```
`operator::tensorflow::Output() const `
``` ```
``` ```

### Public static functions

`DataFormat(StringPiece x)`
`Attrs`
`Dilations(const gtl::ArraySlice< int > & x)`
`Attrs`

### Structs

tensorflow::ops::DepthwiseConv2dNative::Attrs

Optional attribute setters for DepthwiseConv2dNative.

## Public attributes

### operation

`Operation operation`

### output

`::tensorflow::Output output`

## Public functions

### DepthwiseConv2dNative

``` DepthwiseConv2dNative(
const ::tensorflow::Scope & scope,
::tensorflow::Input input,
::tensorflow::Input filter,
const gtl::ArraySlice< int > & strides,
)```

### DepthwiseConv2dNative

``` DepthwiseConv2dNative(
const ::tensorflow::Scope & scope,
::tensorflow::Input input,
::tensorflow::Input filter,
const gtl::ArraySlice< int > & strides,
const DepthwiseConv2dNative::Attrs & attrs
)```

### node

`::tensorflow::Node * node() const `

### operator::tensorflow::Input

` operator::tensorflow::Input() const `

### operator::tensorflow::Output

` operator::tensorflow::Output() const `

## Public static functions

### DataFormat

```Attrs DataFormat(
StringPiece x
)```

### Dilations

```Attrs Dilations(
const gtl::ArraySlice< int > & x
)```
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Missing the information I need" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Too complicated / too many steps" },{ "type": "thumb-down", "id": "outOfDate", "label":"Out of date" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Samples / code issue" },{ "type": "thumb-down", "id": "otherDown", "label":"Other" }]
[{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Easy to understand" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Solved my problem" },{ "type": "thumb-up", "id": "otherUp", "label":"Other" }]