5 只生成张量基础之张量的定义与构造

在上一篇文章中,我们讨论了如何配置环境以便顺利使用 PyTorch 进行深度学习的开发。现在,我们要深入了解 PyTorch 中的核心概念之一:张量(Tensor)。这一篇将集中讲解张量的定义和构造。

什么是张量

在计算机科学和深度学习中,张量是用于存储数据的基本数据结构。可以把它视为一个多维的数组。不同于常规的 Python 数据结构,张量能有效地进行计算,尤其在 GPU(图形处理单元)上。

张量的维度

  • 标量(0维张量): 单个值,例如 $x = 3$。
  • 向量(1维张量): 一维数组,例如 $x = [1, 2, 3]$。
  • 矩阵(2维张量): 二维数组,例如 $x = [[1, 2], [3, 4]]$。
  • 高维张量: 维度高于2的数组,例如一个3D数组可以表示为 $x = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]$。

张量的构造

在 PyTorch 中,构造张量的方法非常灵活,下面将介绍几种常见的构造方式。

1. 从列表或数组构造张量

最直接的方式是使用 torch.tensor 函数来从已有的 Python 列表或 NumPy 数组中构造张量。

1
2
3
4
5
6
7
8
9
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:构建一个指定起始点和结束点的均匀分布的一维张量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 构建全为零的二维张量
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)。例如:

1
2
3
4
5
6
7
8
# 创建一个浮点类型的张量
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 也提供了方便的方法。

1
2
3
4
5
6
7
# 创建一个随机张量
random_tensor = torch.rand((2, 3))
print(random_tensor) # 输出一个2x3的随机张量

# 创建一个符合正态分布的张量
normal_tensor = torch.randn((2, 3))
print(normal_tensor) # 输出一个2x3的标准正态分布张量

小结

在这一部分的教程中,我们介绍了 PyTorch 中张量的定义及如何构造张量。掌握张量的构造是学习深度学习的基础,因为几乎所有的计算都需要使用张量。了解不同的构造方法,让你在未来的工作中能灵活处理数据。

下一篇文章中,我们将探讨张量的基本操作,包括如何对张量进行变换和计算,为后续在 PyTorch 中进行更复杂的操作做好准备。

希望你们能在学习的过程中,积极动手实践,巩固所学的知识!

5 只生成张量基础之张量的定义与构造

https://zglg.work/pytorch-zero/5/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论