**张量(Tensor)**是 PyTorch 中将要使用的主要数据结构。如果你使用过 NumPy,你会发现 PyTorch 张量非常熟悉。从本质上讲,张量是多维数组,与 NumPy 的 ndarray 非常相似。可以把张量看作是常见数学对象的推广:一个标量(单个数字,例如 7)是 0 维张量(或 0 阶张量)。一个向量(一维数字列表或数组,例如 [1, 2, 3])是 1 维张量(或 1 阶张量)。一个矩阵(二维数字网格,例如 [[1, 2], [3, 4]])是 2 维张量(或 2 阶张量)。依此类推,可以有 3 维张量(例如数字立方体,常用于 RGB 图像:高 x 宽 x 通道)、4 维张量(常用于图像批次:批大小 x 高 x 宽 x 通道)等。digraph G { rankdir=LR; node [shape=box, style=filled, fillcolor="#e9ecef", fontname="sans-serif"]; edge [arrowhead=vee]; Scalar [label="标量 (7)\n0维张量"]; Vector [label="向量 [1, 2, 3]\n1维张量"]; Matrix [label="矩阵 [[1, 2],\n [3, 4]]\n2维张量"]; Tensor3D [label="3维张量\n(例如:图像 高x宽x通道)"]; TensorND [label="高维张量\n(例如:批次 批大小x高x宽x通道)"]; Scalar -> Vector [label="增加维度"]; Vector -> Matrix [label="增加维度"]; Matrix -> Tensor3D [label="增加维度"]; Tensor3D -> TensorND [label="..."]; }一种将张量看作标量、向量和矩阵的推广的方式,维度逐渐增加。在深度学习中,张量用来表示几乎所有数据:输入数据: 图像批次、文本序列或特征表格。模型参数: 神经网络层的权重和偏置。中间激活: 网络内部各层的输出。梯度: 反向传播过程中计算的值,用于更新模型参数。与标准 Python 列表甚至 NumPy 数组相比,是什么让 PyTorch 张量特别适合深度学习呢?GPU 加速: 张量可以轻松地移动到图形处理器 (GPU) 或其他硬件加速器上进行处理。这为深度学习中常见的计算密集型操作提供了大幅加速。自动微分: PyTorch 张量通过 Autograd 系统内置了对自动微分的支持(我们将在第 3 章中介绍)。这种机制自动计算梯度,这对通过反向传播训练神经网络来说非常重要。尽管其原理与 NumPy 数组相似,但这两个特性使得 PyTorch 张量成为高效构建和训练模型的主要工具。在接下来的部分中,我们将介绍如何创建和操作这些重要的数据结构。