# 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]
`
.


Args:

- scope: A [Scope](https://www.tensorflow.org/versions/r2.5/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.5/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.5/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.5/api_docs/cc/class/tensorflow/ops/conv2-d#classtensorflow_1_1ops_1_1_conv2_d_1ae27dd9789ca39f5241ef6169e9602d98 (const :: https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/scope#classtensorflow_1_1_scope & scope, :: https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input input, :: https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input filter, const gtl::ArraySlice< int > & strides, StringPiece padding) ` ||
| ` https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/ops/conv2-d#classtensorflow_1_1ops_1_1_conv2_d_1a66103d912b58ddc4cc8630ff2aee7cdc (const :: https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/scope#classtensorflow_1_1_scope & scope, :: https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input input, :: https://www.tensorflow.org/versions/r2.5/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.5/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.5/api_docs/cc/class/tensorflow/ops/conv2-d#classtensorflow_1_1ops_1_1_conv2_d_1af9ad760317104d0f49e840991ec3b098 ` | ` https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/operation#classtensorflow_1_1_operation ` |
| ` https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/ops/conv2-d#classtensorflow_1_1ops_1_1_conv2_d_1aaa248db46e3bf2bdff1daf72d5548c36 ` | ` :: https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/output#classtensorflow_1_1_output ` |

| ### Public functions ||
|---|---|
| ` https://www.tensorflow.org/versions/r2.5/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.5/api_docs/cc/class/tensorflow/ops/conv2-d#classtensorflow_1_1ops_1_1_conv2_d_1a9f4abe0db26277c44cb54ea09954944f () const ` | ` ` |
| ` https://www.tensorflow.org/versions/r2.5/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.5/api_docs/cc/class/tensorflow/ops/conv2-d#classtensorflow_1_1ops_1_1_conv2_d_1abb338036c1cdf1dca0ca58eb4a1f1226 (StringPiece x) ` | ` https://www.tensorflow.org/versions/r2.5/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.5/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.5/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.5/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.5/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.5/api_docs/cc/class/tensorflow/ops/conv2-d#classtensorflow_1_1ops_1_1_conv2_d_1ad94e81abdab43c58740cc2e9a522d35f (bool x) ` | ` https://www.tensorflow.org/versions/r2.5/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.5/api_docs/cc/struct/tensorflow/ops/conv2-d/attrs) | Optional attribute setters for [Conv2D](https://www.tensorflow.org/versions/r2.5/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
)
```