Torch - Torch 张量

张量是可以存储各种类型数据的多维数组。它们类似于 NumPy 数组,但具有其他功能,例如用于更快计算的 GPU。张量可用于以各种方式表示数据,即从向量到标量或矩阵。张量非常灵活;这种灵活性使张量在机器学习和深度学习的广泛应用中更加强大。

例如,在图像处理中,3D 张量可以表示具有宽度、高度和颜色通道的图像。在自然语言处理中,2D 张量可以表示重定向到句子的每一行,以及重定向到单词嵌入的每一列。

张量可以轻松地转换为其他数据结构,例如 Python 列表和 NumPy 数组,从而提供与现有代码库的集成。这与硬件加速相结合,使张量成为机器学习模型开发和部署的基本概念。

张量属性

张量具有不同的属性,这些属性指定有关属性的信息 −

  • size():张量的维度。

  • nDimension():张量的维数。

  • type():张量的数据类型。

我们可以使用以下方法访问这些方法属性 −

print(tensor:size())
print(tensor:nDimension())
print(tensor:type())

操作张量

以下是在 Torch 张量上可以执行的基本操作−

  • 算术运算

  • 矩阵运算

  • 归约运算

  • 元素级运算

Torch 张量函数概述

Torch 张量中的这些操作为困难的深度学习任务指定了元素计算。

函数 描述
torch.add() 添加两个张量
torch.sub() 从另一个张量中减去一个张量
torch.mul() 将两个数字相乘
torch.div() 将一个张量除以另一个张量。
torch.mm() 执行矩阵乘法。
torch.matmul() 在矩阵中执行乘法和支持广播。
torch.t() 2D 张量被转置。
torch.sum() 对张量中的所有元素求和。
torch.mean() 计算所有元素的平均值。
torch.max() 将返回张量中的最大值。
torch.min() 将返回张量中的最小值。
torch.pow() 将计算每个元素的幂。
torch.sqrt() 将计算每个元素的平方根。
torch.abs() 返回每个元素的绝对值。

这些操作对于各种深度学习任务来说都很困难,因为它们允许高效和并行计算。 Torch Tensor 中的每个操作都为深度学习和数值计算提供了多功能和强大的功能。

创建张量

有几种方法可以在 Torch 中使用这些方法创建张量 −

从 Lua 表

我们可以使用 torch.Tensor() 直接从 Lua 表创建张量。这用于小型数据集,或者我们可以手动指定数据。

local data = {{2, 3}, {1, 2}}
local tensor = torch.Tensor(data)

使用工厂方法

Torch 提供不同的工厂方法来创建具有特定值或形状的张量。一些常用方法是 −

  • torch.Tensor():创建一个未初始化的张量。

  • torch.zeros():创建一个用零填充的张量。

  • torch.ones()创建一个用一填充的张量。

  • torch.rand():创建一个具有随机值的张量。

以下几行在 Torch 中创建不同的 4*4 张量 −

local empty_tensor = torch.Tensor(4, 4)
local zeros_tensors = torch.zeros(4, 4)
local ones_tensor = torch.ones(4, 4)
local ransom_tensor = torch.rand(4, 4)