张量和梯度
我们将深入探讨使用 PyTorch 构建自己的神经网络必须了解的 2 个基本概念:张量和梯度。
张量
张量是 PyTorch 中的中央数据单元。它们是类似于数组的数据结构,在功能和属性方面与 Numpy 数组非常相似。它们之间最重要的区别是 PyTorch 张量可以在 GPU 的设备上运行以加速计算。
代码语言:javascript复制# 使用Tensor对象创建了一个 3x3 形状的未初始化张量。
import torch
tensor_uninitialized = torch.Tensor(3, 3)
tensor_uninitialized
"""
tensor([[1.7676e-35, 0.0000e 00, 3.9236e-44],
[0.0000e 00, nan, 0.0000e 00],
[1.3733e-14, 1.2102e 25, 1.6992e-07]])
"""
代码语言:javascript复制# 我们还可以创建用零、一或随机值填充的张量。
tensor_rand = torch.rand(3, 3)
tensor_rand
"""
tensor([[0.6398, 0.3471, 0.6329],
[0.4517, 0.2253, 0.8022],
[0.9537, 0.1698, 0.5718]])
"""
就像 Numpy 数组一样,PyTorch 允许我们在张量之间执行数学运算,同样的 Numpy 数组中的其他常见操作,如索引和切片,也可以使用 PyTorch 中的张量来实现。
代码语言:javascript复制# 数学运算
x = torch.Tensor([[1, 2, 3],
[4, 5, 6]])
tensor_add = torch.add(x, x)
"""
tensor([[ 2., 4., 6.],
[ 8., 10., 12.]])
"""