# tensorflow::ops::Conv2D Class Reference

# tensorflow::ops::Conv2D

`#include <nn_ops.h>`

Computes a 2-D 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, out_channels]`, this op performs the following:


1. Flattens the filter to a 2-D matrix with shape `[filter_height * filter_width * in_channels, output_channels]`.
2. Extracts image patches from the input tensor to form a *virtual* tensor of shape `[batch, out_height, out_width, filter_height * filter_width * in_channels]`.
3. For each patch, right-multiplies the filter matrix and the image patch vector.

<br />

In detail, with the default NHWC format,

```
output[b, i, j, k] =
    sum_{di, dj, q} input[b, strides[1] * i + di, strides[2] * j + dj, q] *
                    filter[di, dj, q, k]
```

<br />

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](https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/scope#classtensorflow_1_1_scope) object
- input: A 4-D tensor. The dimension order is interpreted according to the value of `data_format`, see below for details.
- filter: A 4-D tensor of shape `[filter_height, filter_width, in_channels, out_channels]`
- strides: 1-D tensor of length 4. The stride of the sliding window for each dimension of `input`. The dimension order is determined by the value of `data_format`, see below for details.
- padding: The type of padding algorithm to use.

<br />

Optional attributes (see `https://www.tensorflow.org/versions/r2.3/api_docs/cc/struct/tensorflow/ops/conv2-d/attrs#structtensorflow_1_1ops_1_1_conv2_d_1_1_attrs`):

- explicit_paddings: If `padding` is `"EXPLICIT"`, the list of explicit padding amounts. For the ith dimension, the amount of padding inserted before and after the dimension is `explicit_paddings[2 * i]` and `explicit_paddings[2 * i + 1]`, respectively. If `padding` is not `"EXPLICIT"`, `explicit_paddings` must be empty.
- 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.

<br />

Returns:

- `https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/output#classtensorflow_1_1_output`: A 4-D tensor. The dimension order is determined by the value of `data_format`, see below for details.

<br />

| ### Constructors and Destructors ||
|---|---|
| `https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/ops/conv2-d#classtensorflow_1_1ops_1_1_conv2_d_1ae27dd9789ca39f5241ef6169e9602d98(const ::https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/scope#classtensorflow_1_1_scope & scope, ::https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input input, ::https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input filter, const gtl::ArraySlice< int > & strides, StringPiece padding)` ||
| `https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/ops/conv2-d#classtensorflow_1_1ops_1_1_conv2_d_1a66103d912b58ddc4cc8630ff2aee7cdc(const ::https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/scope#classtensorflow_1_1_scope & scope, ::https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input input, ::https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input filter, const gtl::ArraySlice< int > & strides, StringPiece padding, const https://www.tensorflow.org/versions/r2.3/api_docs/cc/struct/tensorflow/ops/conv2-d/attrs#structtensorflow_1_1ops_1_1_conv2_d_1_1_attrs & attrs)` ||

| ### Public attributes ||
|---|---|
| `https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/ops/conv2-d#classtensorflow_1_1ops_1_1_conv2_d_1af9ad760317104d0f49e840991ec3b098` | `https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/operation#classtensorflow_1_1_operation` |
| `https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/ops/conv2-d#classtensorflow_1_1ops_1_1_conv2_d_1aaa248db46e3bf2bdff1daf72d5548c36` | `::https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/output#classtensorflow_1_1_output` |

| ### Public functions ||
|---|---|
| `https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/ops/conv2-d#classtensorflow_1_1ops_1_1_conv2_d_1a0792a7741b724bc96b71180628af6375() const ` | `::tensorflow::Node *` |
| `https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/ops/conv2-d#classtensorflow_1_1ops_1_1_conv2_d_1a9f4abe0db26277c44cb54ea09954944f() const ` | ` `` ` |
| `https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/ops/conv2-d#classtensorflow_1_1ops_1_1_conv2_d_1ac956ca095c170eabe93569934e8d1eb8() const ` | ` `` ` |

| ### Public static functions ||
|---|---|
| `https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/ops/conv2-d#classtensorflow_1_1ops_1_1_conv2_d_1abb338036c1cdf1dca0ca58eb4a1f1226(StringPiece x)` | `https://www.tensorflow.org/versions/r2.3/api_docs/cc/struct/tensorflow/ops/conv2-d/attrs#structtensorflow_1_1ops_1_1_conv2_d_1_1_attrs` |
| `https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/ops/conv2-d#classtensorflow_1_1ops_1_1_conv2_d_1ad1fd4cc8dd1e6d6fe15d3f4d57352a4f(const gtl::ArraySlice< int > & x)` | `https://www.tensorflow.org/versions/r2.3/api_docs/cc/struct/tensorflow/ops/conv2-d/attrs#structtensorflow_1_1ops_1_1_conv2_d_1_1_attrs` |
| `https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/ops/conv2-d#classtensorflow_1_1ops_1_1_conv2_d_1a1745cff4561efd59e819a2374db7f925(const gtl::ArraySlice< int > & x)` | `https://www.tensorflow.org/versions/r2.3/api_docs/cc/struct/tensorflow/ops/conv2-d/attrs#structtensorflow_1_1ops_1_1_conv2_d_1_1_attrs` |
| `https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/ops/conv2-d#classtensorflow_1_1ops_1_1_conv2_d_1ad94e81abdab43c58740cc2e9a522d35f(bool x)` | `https://www.tensorflow.org/versions/r2.3/api_docs/cc/struct/tensorflow/ops/conv2-d/attrs#structtensorflow_1_1ops_1_1_conv2_d_1_1_attrs` |

| ### Structs ||
|---|---|
| [tensorflow::ops::Conv2D::Attrs](https://www.tensorflow.org/versions/r2.3/api_docs/cc/struct/tensorflow/ops/conv2-d/attrs) | Optional attribute setters for [Conv2D](https://www.tensorflow.org/versions/r2.3/api_docs/cc/class/tensorflow/ops/conv2-d#classtensorflow_1_1ops_1_1_conv2_d). |

## Public attributes

### operation

```
Operation operation
```

### output

```
::tensorflow::Output output
```

## Public functions

### Conv2D

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

### Conv2D

```
 Conv2D(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  ::tensorflow::Input filter,
  const gtl::ArraySlice< int > & strides,
  StringPiece padding,
  const Conv2D::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
)
```

### ExplicitPaddings

```
Attrs ExplicitPaddings(
  const gtl::ArraySlice< int > & x
)
```

### UseCudnnOnGpu

```
Attrs UseCudnnOnGpu(
  bool x
)
```