学 PyTorch 时第一个绕不开的概念就是Tensor。很多人会把它翻译成“张量”这个词听起来有点硬。但从代码角度看可以先把 Tensor 理解成更通用的数组。它可以是一组数字也可以是一张表还可以是一批图片。从数字到 Tensor一个普通数字可以看成 0 维 Tensorimport torch ​ x torch.tensor(3.0)一组数字可以看成 1 维 Tensorx torch.tensor([1.0, 2.0, 3.0])一个矩阵可以看成 2 维 Tensorx torch.tensor([ [1.0, 2.0], [3.0, 4.0], ])如果是一批图片维度可能更多比如[batch, channel, height, width]这就是深度学习里常见的四维 Tensor。Tensor 为什么重要在 PyTorch 里几乎所有东西都会变成 Tensor。训练数据是 Tensor模型参数是 Tensor中间计算结果是 Tensor梯度也是 Tensor。如果你理解了 Tensor 的形状和流动方式很多模型代码就会清楚很多。shape 是第一重点看 Tensor 时最重要的是看它的shape。比如x torch.randn(32, 784) print(x.shape)这里的32通常表示 batch size784可能表示每个样本的特征数量。很多 PyTorch 报错本质上都是 shape 对不上。比如 Linear 层期待输入是[batch, in_features]但你传进去的是别的形状就会报维度错误。Tensor 和 NumPy 有点像如果你学过 NumPy会发现 Tensor 和ndarray很像。它们都可以做矩阵计算、切片、广播、变形。但 PyTorch Tensor 有两个特别重要的能力可以放到 GPU 上计算可以记录梯度支持自动求导这也是它能用于深度学习训练的关键。常见操作几个入门阶段最常用的操作x torch.randn(2, 3) ​ x.shape x.reshape(3, 2) x.to(cuda) x.float() x.mean() x.sum()这些操作不需要一次性背完但要慢慢熟悉。尤其是reshape、to(device)、float()在训练代码里非常常见。小结Tensor 是 PyTorch 的基础数据对象。先别被“张量”这个名字吓到。你可以把它理解成可以参与深度学习计算的多维数组。学 PyTorch 时多看 shape多跟踪数据从输入到模型输出的变化很多问题都会变得清楚。技术图把关键链路画清楚可运行实验同时检查 shape、dtype 与广播Tensor 报错多数不是“数学太难”而是形状、类型或设备不匹配。养成打印这三项的习惯比盲目改代码有效。import torch ​ x torch.tensor([[1, 2, 3], [4, 5, 6]], dtypetorch.float32) bias torch.tensor([0.1, 0.2, 0.3]) y x bias print(x:, tuple(x.shape), x.dtype, x.device) print(bias:, tuple(bias.shape)) print(y:\n, y)运行结果x: (2, 3) torch.float32 cpu bias: (3,) y: tensor([[1.1000, 2.2000, 3.3000], [4.1000, 5.2000, 6.3000]])bias只有 3 个元素却能自动作用到两行数据上这就是广播。广播很方便但维度含义不清时也可能悄悄产生错误结果。常见误区Tensor 的维度越多越高级。维度只描述数据组织方式。Shape 能对上就一定正确。相同 shape 也可能代表完全不同的语义。动手练习把bias改成 shape 为(2,)的 Tensor观察报错并解释哪个维度无法匹配。本文首发于「去你想去的地方」 Tensor 是什么PyTorch 里最重要的对象讲清楚 | 去你想去的地方完整学习路线、视频版和后续更新请访问原文。