Tensor 是什么?PyTorch 里最重要的对象讲清楚

Tensor 可以理解成更通用的数组,它承载数据、参数和梯度,是 PyTorch 训练流程的基础。

学习路线:AI 入门与 PyTorch 基础(1~20) · 第 15 课
第 15 课笔记本上画着方格矩阵,屏幕里显示抽象的张量和柱状图。
Learning Path

AI 入门与 PyTorch 基础(1~20)

从 AI 基本概念、机器学习任务、深度学习直觉、PyTorch 入门到中文文本分类项目全貌。

学完本阶段你能做到:能说清 AI、机器学习、深度学习、PyTorch 训练流程和一个中文文本分类项目的大致链路。

推荐读法:零基础建议顺序阅读;已有基础的读者可以把它当作路线地图和查漏补缺清单。

查看完整阶段 · 20 篇
Lesson Guide

这一课怎么学

先看目标,再带着问题读正文。读完后用练习确认自己真的理解了。

本节你会学到

  • 说清楚「Tensor 是什么?PyTorch 里最重要的对象讲清楚」解决的核心问题
  • 知道它在「AI 入门与 PyTorch 基础(1~20)」中的位置
  • 把 Tensor、机器学习、人工智能 这些关键词联系起来

前置知识

  • 建议先读完上一篇:前向传播与反向传播到底在做什么?
  • 能区分输入、输出、数据和模型目标。

概念回顾

  • 【Tensor】可以先把 Tensor 理解成支持 GPU、梯度和批量计算的多维数组。 前面或后面会反复用到它。
  • 【机器学习】机器学习的重点不是手写所有规则,而是准备数据、定义目标,让模型自己找到可复用的模式。 前面或后面会反复用到它。
  • 【人工智能】先把 AI 理解成一类能力:机器不是只照规则执行,而是能从数据、规则或反馈中完成更复杂的判断。 前面或后面会反复用到它。
  • 【DataLoader】DataLoader 负责把数据一批一批喂给模型,训练循环才不会手忙脚乱。 前面或后面会反复用到它。

常见误区

  • 不要只记定义,要追问它解决了什么问题。
  • 不要只看 API 名字,要同时关注输入输出 shape 和训练流程。

课后练习

  • 用 3 句话向一个零基础朋友解释「Tensor 是什么?PyTorch 里最重要的对象讲清楚」。
  • 打开概念库里的「Tensor」,补一遍它和本文的关系。
  • 读下一课「PyTorch 的 Linear 层详解:全连接层到底做了什么」前,先写下你认为它会解决的问题。

自检练习与参考答案

1. 如果一段 PyTorch 代码报 device 不一致,第一步应该检查什么?

先检查模型参数、输入 Tensor、标签 Tensor 是否在同一个设备上。常见修正是把它们统一 `.to(device)`。

2. 为什么学习 PyTorch 时不能只看 API 名字?

因为训练是否正确经常取决于 shape、dtype、device 和梯度流,API 名字只能告诉你工具,不会保证数据契约正确。

3. 读完本文后,至少应该能画出哪条训练主线?

`输入数据 → forward → loss → backward → optimizer.step()`,并知道本文主题位于这条链路的哪一环。

下一步建议读「PyTorch 的 Linear 层详解:全连接层到底做了什么」。

学 PyTorch 时,第一个绕不开的概念就是 Tensor

很多人会把它翻译成“张量”,这个词听起来有点硬。但从代码角度看,可以先把 Tensor 理解成更通用的数组。

它可以是一组数字,也可以是一张表,还可以是一批图片。

第 15 课视频 · Tensor 是什么?(约 1 分 34 秒)

从数字到 Tensor

一个普通数字可以看成 0 维 Tensor:

import torch

x = torch.tensor(3.0)

一组数字可以看成 1 维 Tensor:

x = torch.tensor([1.0, 2.0, 3.0])

一个矩阵可以看成 2 维 Tensor:

x = 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 size,784 可能表示每个样本的特征数量。

很多 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()

这些操作不需要一次性背完,但要慢慢熟悉。

尤其是 reshapeto(device)float(),在训练代码里非常常见。

小结

Tensor 是 PyTorch 的基础数据对象。

先别被“张量”这个名字吓到。你可以把它理解成可以参与深度学习计算的多维数组。

学 PyTorch 时,多看 shape,多跟踪数据从输入到模型输出的变化,很多问题都会变得清楚。

Discussion

留言讨论