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 张量中的每个运算都使其成为深度学习和数值计算中用途广泛且强大的工具。
创建张量
可以使用以下方法在 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)