Tensor

1. 张量的定义

张量是一个多维数组,可以有任意数量的维度。根据维度的不同,张量可以分为以下几类:

  • 标量(Scalar):零阶张量,即一个单一的数值。例如,3 或 -1.5。
  • 向量(Vector):一阶张量,即一维数组。例如,[1, 2, 3]。
  • 矩阵(Matrix):二阶张量,即二维数组。例如,[[1, 2], [3, 4]]。
  • 高阶张量(Higher-order Tensor):三维及以上的数组。例如,三阶张量 [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]。

2. 张量与向量的关系

向量是张量的一种特殊形式。具体来说,向量是一阶张量。张量可以看作是向量的推广,向量是张量的一种特例。

  • 向量:一阶张量,只有一个维度。例如,[1, 2, 3] 是一个包含三个元素的向量。
  • 张量:可以有任意数量的维度。例如,[[1, 2], [3, 4]] 是一个二维张量(矩阵),[[[1, 2], [3, 4]], [[5, 6], [7, 8]]] 是一个三维张量。

3. 张量的表示

在 PyTorch 中,张量是通过 torch.Tensor 类来表示的。

4. 张量的操作

vector1 = torch.tensor([1.0, 2.0, 3.0])
vector2 = torch.tensor([4.0, 5.0, 6.0])

vector_sum = vector1 + vector2
print(vector_sum)  # 输出: tensor([5., 7., 9.])

dot_product = torch.dot(vector1, vector2)
print(dot_product)  # 输出: tensor(32.)

matrix1 = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
matrix2 = torch.tensor([[5.0, 6.0], [7.0, 8.0]])

matrix_sum = matrix1 + matrix2
print(matrix_sum)  # 输出: tensor([[ 6.,  8.], [10., 12.]])

matrix_product = torch.matmul(matrix1, matrix2)
print(matrix_product)  # 输出: tensor([[19., 22.], [43.,

5. 梯度的定义

梯度是某个标量函数(通常是损失函数)相对于其输入变量的导数。

1. backward() 方法

y.backward() 方法用于计算 y 对所有叶子节点(即 requires_grad=True 的张量)的梯度,并将结果存储在这些叶子节点的 grad 属性中。