<commit_before># 二维卷积层

卷积神经网络是指主要由卷积层（convolutional layer）组成的网络。因为它最常用来处理图片数据，其有高和宽两个空间维度（彩色图片的颜色通道维度将在之后小节讨论），所以最常用到的是二维卷积层。本小节我们将介绍简单形式的二维卷积层是怎么工作的。

## 互相关运算


虽然卷积层得名于卷积运算符（convolution），但我们常用更加直观的互相关运算（cross-correlation）来实现卷积层。一个互相关运算符将一个二维核（kernel）数组作用在一个二维输入数据上来计算一个二维数组输出。图5.1演示了如何对一个高宽为3的输入作用高宽为2的卷积核来计算输出。

![二维相关运算符的计算。高亮部分为第一个输出元素及其计算所使用的输入和核数组元素：$0\times0+1\times1+3\times2+4\times3=19$。](../img/correlation.svg)

可以看到输出的形状是`(2, 2)`，且第一个元素是由输入的左上的高宽为2的子数组与核数组按元素相乘后再相加得来。设输入、核以及输出分别为`X`、`K`和`Y`，即`Y[0, 0] = (X[0:2, 0:2] * K).sum()`，这里`X`、`K`和`Y`的类型都是NDArray。接下来我们将`X`中高亮部分的高宽为2的窗口向右滑动一列来计算`Y`的第二列第一个元素。以此类推计算得到输出中所有结果。

下面我们将上述过程实现在`corr2d`函数里，它接受`X`和`K`，输出`Y`。

```{.python .input}
from mxnet import autograd, nd
from mxnet.gluon import nn

def corr2d(X, K):
    h, w = K.shape
    Y = nd.zeros((X.shape[0] - h + 1, X.shape[1] - w + 1))<commit_msg>revise conv layer<commit_after># 二维卷积层

卷积神经网络指含有卷积层（convolutional layer）的神经网络。本章关注最常见的二维卷积层。它有高和宽两个空间维度，并适合处理图像数据。本小节我们将介绍简单形式的二维卷积层是怎么工作的。


## 互相关运算

虽然卷积层得名于卷积（convolution）运算，但我们通常在卷积层中使用更加直观的互相关运算（cross-correlation）。在二维卷积层中，一个二维输入数组和一个二维核（kernel）数组通过互相关运算输出一个二维数组。

![二维相关运算符的计算。高亮部分为第一个输出元素及其计算所使用的输入和核数组元素：$0\times0+1\times1+3\times2+4\times3=19$。](../img/correlation.svg)

我们用一个具体例子来解释互相关运算的含义。图5.1演示了如何对一个高宽为3的输入作用高宽为2的卷积核来计算输出。可以看到输出的形状是`(2, 2)`，且第一个元素是由输入的左上的高宽为2的子数组与核数组按元素相乘后再相加得来。设输入、核以及输出分别为`X`、`K`和`Y`，即`Y[0, 0] = (X[0:2, 0:2] * K).sum()`，这里`X`、`K`和`Y`的类型都是NDArray。接下来我们将`X`中高亮部分的高宽为2的窗口向右滑动一列来计算`Y`的第二列第一个元素。以此类推计算得到输出中所有结果。

下面我们将上述过程实现在`corr2d`函数里，它接受`X`和`K`，输出`Y`。

```{.python .input}
from mxnet import autograd, nd
from mxnet.gluon import nn

def corr2d(X, K):
    h, w = K.shape
    Y = nd.zeros((X.shape[0] - h + 1, X.shape[1] - w + 1))
{'fraction_non_alphanumeric': 0.16492450638792103, 'fraction_numerical': 0.03484320557491289, 'mean_word_length': 9.076023391812866, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6032004', 'n_tokens_mistral': 1305, 'n_tokens_neox': 1490, 'n_words': 77}