趋近智
requires_grad)backward()).grad)torch.nn 搭建模型torch.nn.Module 基类torch.nn 损失)torch.optim)torch.utils.data.Datasettorchvision.transforms)torch.utils.data.DataLoader标准神经网络层,如 nn.Linear,将输入数据视为一个扁平向量。尽管功能强大,但这种方法未能内在理解图像等数据中存在的空间结构。对于图像来说,相互靠近的像素通常是关联的,它们构成边缘、纹理或物体的一部分。当直接应用于图像时,全连接层面临两个主要问题:
卷积神经网络 (CNN) 是一种专门设计用于处理具有网格状拓扑数据(如图像(2D 网格)或时间序列数据(1D 网格))的神经网络。它们通过结合两个主要思想来解决标准网络的局限:局部感受野(通过卷积)和空间下采样(通过池化)。
CNN 的核心组成部分是卷积层。卷积层不将每个输入单元连接到每个输出单元,而是使用小的过滤器(也称为核),它们在输入数据上滑动。每个过滤器都是一个小的权重矩阵。
想象一个微小的放大镜(即过滤器)在输入图像上滑动。在每个位置,过滤器会与其当前覆盖的图像区域执行元素级乘法,并将结果求和以在输出中生成一个单一值。这个过程在整个输入图像上重复进行,生成一个输出特征图。
过滤器对输入的局部区域施加权重,以计算输出特征图中的一个值。
这种滑动过滤器方法具有两个显著优点:
通常,一个卷积层会使用多个过滤器,每个过滤器学习识别不同类型的特征(例如,一个过滤器识别水平边缘,另一个识别垂直边缘,还有一个识别特定纹理)。这些过滤器的输出堆叠在一起,形成该层的最终输出体。PyTorch 主要通过 nn.Conv2d 层来实现图像数据的这一操作。
就像在标准网络中一样,非线性激活函数(例如 ReLU,在 PyTorch 中实现为 nn.ReLU)通常在卷积操作之后进行元素级应用。这使得网络能够学习特征之间复杂的非线性关系。
在通过卷积层检测到特征后,通常有益于使表示更紧凑并对小的空间变异具有抵抗力。这通过使用池化层来实现。
最常见的类型是最大池化。它也涉及在特征图上滑动一个窗口(通常小于卷积过滤器且不重叠或带步幅)。但是,它不应用学习到的权重,而只是简单地取出该窗口内的最大值。
最大池化选择特征图局部窗口内的最大值。
池化提供多项益处:
PyTorch 提供了 nn.MaxPool2d 等池化层。
一个典型的 CNN 架构通常会堆叠这些组件:
nn.Linear) 层,类似于标准前馈网络,用于最终的分类或回归。一个典型的 CNN 架构流程。
CNN 运用卷积和池化,直接从网格状数据中自动学习特征的分层表示,这使得它们在图像识别、物体检测等任务中表现非常出色,甚至在文本得到适当表示时,也能用于自然语言处理。在下一节中,你将看到如何在 PyTorch 中实现像 nn.Conv2d 和 nn.MaxPool2d 这样的构建模块,以构建你的第一个 CNN。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造