5 Pytorch小白从零学教程:只生成张量基础之张量的定义与构造
系列进度
PyTorch 入门 · 第 5 / 20 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
张量是 PyTorch 的基本数据结构。学习张量时不要只看值,更要看 shape、dtype、device 和 requires_grad。
官方教程:PyTorch Tensors
每创建一个张量,我都会打印 shape、dtype 和 device。训练问题很多时候第一眼就能从这三项看出来。
在上一篇文章中,我们讨论了如何配置环境以便顺利使用 PyTorch 进行深度学习的开发。现在,我们要深入了解 PyTorch 中的核心概念之一:张量(Tensor)。这一篇将集中讲解张量的定义和构造。
什么是张量
在计算机科学和深度学习中,张量是用于存储数据的基本数据结构。可以把它视为一个多维的数组。不同于常规的 Python 数据结构,张量能有效地进行计算,尤其在 GPU(图形处理单元)上。
学习张量定义与构造时,先确认 shape、dtype、device 和数据来源。很多 PyTorch 报错,本质都是张量属性没有对齐。
张量的维度
- 标量(0维张量): 单个值,例如 。
- 向量(1维张量): 一维数组,例如 。
- 矩阵(2维张量): 二维数组,例如 。
- 高维张量: 维度高于2的数组,例如一个3D数组可以表示为 。
张量的构造
在 PyTorch 中,构造张量的方法非常灵活,下面将介绍几种常见的构造方式。
看完《Pytorch小白从零学教程:只生成张量基础之张量的定义与构造》后,建议用一分钟复盘:关键概念是否分清、练习步骤是否可复现、结论能不能换成自己的话。
1. 从列表或数组构造张量
最直接的方式是使用 torch.tensor 函数来从已有的 Python 列表或 NumPy 数组中构造张量。
import torch
# 从列表构造张量
list_tensor = torch.tensor([1, 2, 3, 4])
print(list_tensor) # 输出: tensor([1, 2, 3, 4])
# 从多维列表构造张量
matrix_tensor = torch.tensor([[1, 2], [3, 4]])
print(matrix_tensor) # 输出: tensor([[1, 2], [3, 4]])
2. 使用 PyTorch 提供的构造函数
PyTorch 提供了一些特定用途的张量构造函数,例如:
torch.zeros:构建全为零的张量torch.ones:构建全为一的张量torch.empty:构建未初始化的张量torch.arange:构建一个指定范围的均匀间隔的一维张量torch.linspace:构建一个指定起始点和结束点的均匀分布的一维张量
# 构建全为零的二维张量
zero_tensor = torch.zeros((2, 3))
print(zero_tensor)
# 构建全为一的张量
ones_tensor = torch.ones((3, 2))
print(ones_tensor)
# 构建一个从0到4的张量,步长为1
arange_tensor = torch.arange(0, 5)
print(arange_tensor) # 输出: tensor([0, 1, 2, 3, 4])
# 构建一个从0到1的五个均匀分布的点
linspace_tensor = torch.linspace(0, 1, steps=5)
print(linspace_tensor) # 输出: tensor([0.0000, 0.2500, 0.5000, 0.7500, 1.0000])
3. 指定数据类型和设备
创建张量的时候,可以指定数据类型和设备(CPU或GPU)。例如:
# 创建一个浮点类型的张量
float_tensor = torch.tensor([1, 2, 3], dtype=torch.float32)
print(float_tensor)
# 将张量移动到GPU
if torch.cuda.is_available():
gpu_tensor = float_tensor.to('cuda')
print(gpu_tensor)
4. 随机生成张量
在深度学习中,常常需要随机初始化张量。PyTorch 也提供了方便的方法。
# 创建一个随机张量
random_tensor = torch.rand((2, 3))
print(random_tensor) # 输出一个2x3的随机张量
# 创建一个符合正态分布的张量
normal_tensor = torch.randn((2, 3))
print(normal_tensor) # 输出一个2x3的标准正态分布张量
复习《Pytorch小白从零学教程:只生成张量基础之张量的定义与构造》时,建议把关键概念、操作步骤和可见结果放在同一页里回看。
练习《Pytorch小白从零学教程:只生成张量基础之张量的定义与构造》时,建议把输入条件、处理动作和可见结果写在一起,方便下次复查。
小结
在这一部分的教程中,我们介绍了 PyTorch 中张量的定义及如何构造张量。掌握张量的构造是学习深度学习的基础,因为几乎所有的计算都需要使用张量。了解不同的构造方法,让你在未来的工作中能灵活处理数据。
下一篇文章中,我们将探讨张量的基本操作,包括如何对张量进行变换和计算,为后续在 PyTorch 中进行更复杂的操作做好准备。
希望你们能在学习的过程中,积极动手实践,巩固所学的知识!
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
Pytorch小白从零学教程:只生成张量基础之张量的定义与构造适合谁读?
这是 PyTorch 入门 系列第 5 / 20 篇,适合正在学习PyTorch 入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇PyTorch 入门教程要多久?
按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读