torch#
创建日期: 2016 年 12 月 23 日 | 最后更新日期: 2025 年 10 月 17 日
torch 包包含用于多维张量的数据结构,并定义了这些张量的数学运算。此外,它还提供了许多用于高效序列化张量和任意类型的实用程序,以及其他有用的工具。
它有一个 CUDA 对应物,使您能够在具有计算能力 >= 3.0 的 NVIDIA GPU 上运行张量计算。
张量#
如果 obj 是 PyTorch 张量,则返回 True。 |
|
如果 obj 是 PyTorch 存储对象,则返回 True。 |
|
如果 |
|
如果 |
|
如果 |
|
如果 |
|
将默认浮点 dtype 设置为 |
|
获取当前的默认浮点 |
|
将默认的 |
|
获取默认的 |
|
返回 |
|
设置打印选项。 |
|
禁用 CPU 上的非正规化浮点数。 |
创建操作#
注意
随机采样创建操作列在 随机采样 下,包括: torch.rand() torch.rand_like() torch.randn() torch.randn_like() torch.randint() torch.randint_like() torch.randperm() 您也可以使用 torch.empty() 配合 原地随机采样 方法来创建具有从更广泛分布中采样的值的 torch.Tensor。
通过复制 |
|
使用指定的 |
|
使用指定的 |
|
使用指定的 |
|
使用指定的 |
|
使用指定的 |
|
将 |
|
将 |
|
使用指定的 |
|
创建一个 CPU 张量,其存储由内存映射文件支持。 |
|
从 |
|
将外部库中的张量转换为 |
|
从实现了 Python 缓冲区协议的对象创建一维 |
|
返回一个填充了标量值 0 的张量,其形状由可变参数 |
|
返回一个填充了标量值 0 的张量,其大小与 |
|
返回一个填充了标量值 1 的张量,其形状由可变参数 |
|
返回一个填充了标量值 1 的张量,其大小与 |
|
返回一个 1-D 张量,其大小为 从区间 |
|
返回一个 1-D 张量,其大小为 ,其值从 |
|
创建一个一维张量,大小为 |
|
创建一个一维张量,大小为 |
|
返回一个 2-D 张量,对角线元素为 1,其他元素为 0。 |
|
返回一个填充了未初始化数据的张量。 |
|
返回一个未初始化张量,其大小与 |
|
创建一个具有指定的 |
|
创建一个大小为 |
|
返回一个大小与 |
|
将浮点张量转换为具有给定缩放和零点的量化张量。 |
|
将浮点张量转换为具有给定缩放和零点的逐通道量化张量。 |
|
通过对量化张量进行反量化,返回一个fp32张量。 |
|
计算 |
索引、切片、连接、变异操作#
返回一个视图,该视图将张量进行共轭处理,并转置最后两个维度。 |
|
返回一个包含 |
|
沿着给定的维度将序列 |
|
是 |
|
是 |
|
返回 |
|
尝试将张量分割成指定数量的块。 |
|
根据 |
|
通过水平堆叠 |
|
按深度方向(沿第三个轴)堆叠序列中的张量。 |
|
沿由 dim 指定的轴收集值。 |
|
根据 |
|
按水平(列方向)顺序堆叠张量。 |
|
有关函数描述,请参见 |
|
有关函数描述,请参见 |
|
有关函数描述,请参见 |
|
使用 |
|
返回一个一维新张量,它根据布尔掩码 |
|
将 |
|
是 |
|
返回 |
|
与 |
|
返回原始张量 |
|
返回一个与 |
|
是 |
|
沿着选定的维度,在给定索引处切片 |
|
|
|
将 |
|
将 |
|
将 |
|
|
|
沿着指定轴对输入张量执行分段归约操作。 |
|
将张量分割成块。 |
|
返回一个张量,移除了 |
|
沿新维度连接一系列张量。 |
|
是 |
|
是 |
|
期望 |
|
使用给定索引从 |
|
沿着给定的 |
|
根据 |
|
通过重复 |
|
返回 |
|
移除一个张量维度。 |
|
将平坦索引张量转换为坐标张量元组,这些元组可以索引到任意指定形状的张量。 |
|
返回一个新张量,在指定位置插入一个大小为一的维度。 |
|
根据 |
|
按垂直(行方向)顺序堆叠张量。 |
|
根据 |
加速器#
在 PyTorch 仓库中,我们将“加速器”定义为与 CPU 一起用于加速计算的 torch.device。这些设备使用异步执行方案,主要通过 torch.Stream 和 torch.Event 来执行同步。我们还假设在给定的主机上一次只能有一个这样的加速器可用。这允许我们将当前加速器用作固定内存、Stream device_type、FSDP 等相关概念的默认设备。
截至今天,加速器设备包括(不分先后顺序):“CUDA”、“MTIA”、“XPU”、“MPS”、“HPU”和 PrivateUse1(PyTorch 仓库本身中没有的许多设备)。
PyTorch 生态系统中的许多工具使用 fork 来创建子进程(例如数据加载或内部操作并行性),因此尽可能推迟任何会阻止进一步 fork 的操作非常重要。这对这里尤其重要,因为大多数加速器的初始化都有这种效果。在实践中,您应该记住,默认情况下检查 torch.accelerator.current_accelerator() 是一个编译时检查,因此总是安全的。相反,向此函数传递 check_available=True 标志或调用 torch.accelerator.is_available() 通常会阻止后续的 fork。
一些后端提供了实验性的选择加入选项,以使运行时可用性检查是 fork 安全的。例如,在使用 CUDA 设备时,可以使用 PYTORCH_NVML_BASED_CUDA_CHECK=1。
生成器#
创建并返回一个生成器对象,用于管理生成伪随机数的算法状态。 |
随机采样#
设置随机数种子,在所有设备上生成非确定性随机数。 |
|
设置随机数种子,在所有设备上生成随机数。 |
|
返回生成随机数的初始种子,作为Python long类型。 |
|
将随机数生成器状态作为torch.ByteTensor返回。 |
|
设置随机数生成器状态。 |
- torch.default_generator 返回 默认 CPU torch.Generator#
从伯努利分布中抽取二元随机数(0 或 1)。 |
|
返回一个张量,其中每行包含从多项分布中采样的 |
|
返回一个张量,其中包含从独立正态分布中抽取的随机数,其均值和标准差是给定的。 |
|
返回一个与 |
|
返回一个在区间 上服从均匀分布的随机数张量。 |
|
返回一个与 |
|
返回一个张量,其中填充了在 |
|
返回一个与张量 |
|
返回一个填充了从均值为 0、方差为 1 的正态分布(也称为标准正态分布)中抽取的随机数的张量。 |
|
返回一个与 |
|
返回从 |
原地随机采样#
张量上还定义了几个原地随机采样函数。点击查看它们的文档。
torch.Tensor.cauchy_()- 从柯西分布中抽取的数字torch.Tensor.exponential_()- 从指数分布中抽取的数字torch.Tensor.geometric_()- 从几何分布中抽取的元素torch.Tensor.log_normal_()- 从对数正态分布中采样torch.Tensor.normal_()-torch.normal()的原地版本torch.Tensor.random_()- 从离散均匀分布中采样的数字torch.Tensor.uniform_()- 从连续均匀分布中采样的数字
拟随机采样#
|
序列化#
将对象保存到磁盘文件。 |
|
从文件加载使用 |
并行性#
返回用于并行化 CPU 操作的线程数。 |
|
设置 CPU 上用于 intraop 并行化的线程数。 |
|
返回 CPU 上用于 inter-op 并行化的线程数(例如,在 JIT 解释器中)。 |
|
设置 CPU 上用于 interop 并行化(例如,在 JIT 解释器中)的线程数。 |
局部禁用梯度计算#
上下文管理器 torch.no_grad()、torch.enable_grad() 和 torch.set_grad_enabled() 有助于局部禁用和启用梯度计算。有关其用法的更多详细信息,请参阅 局部禁用梯度计算。这些上下文管理器是线程本地的,因此如果您使用 threading 模块等将工作发送到另一个线程,它们将不起作用。
示例
>>> x = torch.zeros(1, requires_grad=True)
>>> with torch.no_grad():
... y = x * 2
>>> y.requires_grad
False
>>> is_train = False
>>> with torch.set_grad_enabled(is_train):
... y = x * 2
>>> y.requires_grad
False
>>> torch.set_grad_enabled(True) # this can also be used as a function
>>> y = x * 2
>>> y.requires_grad
True
>>> torch.set_grad_enabled(False)
>>> y = x * 2
>>> y.requires_grad
False
禁用梯度计算的上下文管理器。 |
|
启用梯度计算的上下文管理器。 |
|
用于开启或关闭梯度计算的上下文管理器。 |
|
如果当前启用了 grad 模式,则返回 True。 |
|
启用或禁用推理模式的上下文管理器。 |
|
如果当前启用了推理模式,则返回 True。 |
数学运算#
常量#
|
浮点正无穷大。是 |
|
浮点“非数字”值。该值不是合法的数字。是 |
逐元素运算#
计算 |
|
|
|
返回一个新张量,其中包含 |
|
|
|
返回一个新张量,其中包含 |
|
|
|
将 |
|
将 |
|
将 |
|
计算给定 |
|
返回一个新张量,其中包含 |
|
|
|
返回一个新张量,其中包含 |
|
|
|
返回一个新张量,其中包含 |
|
|
|
返回一个新张量,其中包含 |
|
|
|
的逐元素反正切,并考虑象限。 |
|
|
|
计算给定输入张量的按位 NOT。 |
|
计算 |
|
计算 |
|
计算 |
|
将 |
|
将 |
|
返回一个新张量,其中包含 |
|
|
|
计算给定 |
|
创建一个新的浮点张量,其幅度来自 |
|
返回一个新张量,其中包含 |
|
返回一个新张量,其中包含 |
|
返回一个新张量,其中 |
|
将输入 |
|
|
|
|
|
|
|
返回一个新张量,其元素是输入张量 |
|
|
|
返回一个新的张量,其中 |
|
返回一个新的张量,其中 |
|
|
|
将 |
|
返回一个新张量,其中包含 |
|
逐元素应用 C++ 的 std::fmod。 |
|
计算 |
|
将 |
|
使用 二阶精确中心差分法 以及边界处的一阶或二阶估计,估计函数 的梯度。 |
|
返回一个包含 |
|
将 |
|
对两个张量 |
|
计算 |
|
返回一个新张量,其中包含 |
|
返回一个新张量,其中包含 |
|
返回一个新张量,其中包含(1 + |
|
返回一个新张量,其中包含 |
|
输入指数和的对数。 |
|
以2为底的输入指数和的对数。 |
|
计算给定输入张量的逐元素逻辑 AND。 |
|
计算给定输入张量的逐元素逻辑 NOT。 |
|
计算给定输入张量的逐元素逻辑 OR。 |
|
计算给定输入张量的逐元素逻辑 XOR。 |
|
给定一个直角三角形的两条直角边,返回其斜边。 |
|
|
|
将 |
|
|
|
将 |
|
返回一个新张量,其中包含 |
|
|
|
返回 |
|
返回 |
|
计算 |
|
对 4D(NCHW)量化张量应用批量归一化。 |
|
对由多个输入平面组成的输入量化张量应用 1D 最大池化。 |
|
对由多个输入平面组成的输入量化张量应用 2D 最大池化。 |
|
返回一个新张量,其中 |
|
返回一个包含 |
|
返回一个新张量,其中包含 |
|
逐元素计算 Python 的模运算。 |
|
将 |
|
返回一个新张量,其中包含 |
|
返回一个新张量,其中包含 |
|
此函数是 torch.sign() 对复数张量的扩展。 |
|
测试 |
|
返回一个新张量,其中包含 |
|
|
|
返回一个新张量,其中包含 |
|
返回一个新张量,其中包含 |
|
返回一个新张量,其中包含 |
|
从 |
|
|
|
返回一个新张量,其中包含 |
|
返回一个新张量,其元素是 |
|
|
|
返回一个新张量,其中包含 |
|
归约运算#
返回 |
|
返回扁平张量或沿某一维度的最小值的索引 |
|
在给定维度 |
|
在给定维度 |
|
计算 |
|
测试 |
|
测试 |
|
返回 |
|
返回 |
|
返回 ( |
|
返回 |
|
计算指定维度上所有 非 NaN 元素的平均值。 |
|
返回 |
|
返回 |
|
返回一个命名元组 |
|
返回给定张量的矩阵范数或向量范数。 |
|
返回所有元素的总和,将 Not a Numbers (NaN) 视为零。 |
|
返回 |
|
计算 |
|
这是 |
|
计算指定维度 |
|
计算指定维度 |
|
返回 |
|
返回输入张量的唯一元素。 |
|
从每个连续的等效元素组中删除除第一个元素之外的所有元素。 |
|
计算指定维度 |
|
计算指定维度 |
|
计算张量 |
|
返回 |
比较运算#
此函数检查 |
|
按值升序返回沿给定维度对张量进行排序的索引。 |
|
计算逐元素相等 |
|
如果两个张量具有相同的大小和元素,则为 |
|
逐元素计算 。 |
|
|
|
逐元素计算 。 |
|
|
|
返回一个具有布尔元素的新张量,表示 |
|
返回一个具有布尔元素的新张量,表示每个元素是否为有限。 |
|
测试 |
|
测试 |
|
测试 |
|
测试 |
|
返回一个具有布尔元素的新张量,表示 |
|
返回一个具有布尔元素的新张量,表示 |
|
返回一个命名元组 |
|
逐元素计算 。 |
|
|
|
逐元素计算 。 |
|
|
|
计算 |
|
计算 |
|
计算 |
|
计算 |
|
逐元素计算 。 |
|
|
|
沿给定维度按值升序对 |
|
返回 |
|
沿 |
Spectral Ops#
短时傅里叶变换 (STFT)。 |
|
逆短时傅里叶变换。 |
|
Bartlett 窗函数。 |
|
Blackman 窗函数。 |
|
Hamming 窗函数。 |
|
Hann 窗函数。 |
|
使用窗长 |
Other Operations#
返回每个输入张量的一维视图,其中零维度。 |
|
返回每个输入张量的 2 维视图,其中零维。 |
|
返回每个输入张量的 3 维视图,其中零维。 |
|
统计非负整数数组中每个值的频率。 |
|
从提供的张量创建块对角矩阵。 |
|
根据 广播语义 广播给定的张量。 |
|
将 |
|
与 |
|
返回 |
|
计算给定张量序列的笛卡尔积。 |
|
计算两个行向量集合之间每对向量的 p-范数距离(批处理)。 |
|
返回 |
|
计算给定张量长度为 的组合。 |
|
估计给定 |
|
估计给定 |
|
返回 |
|
返回一个命名元组 |
|
返回一个命名元组 |
|
返回 |
|
返回 |
|
|
|
创建一个张量,其二维平面(由 |
|
|
|
返回 |
|
沿给定维度计算 |
|
使用基于爱因斯坦求和约定的符号,对输入 |
|
通过将 |
|
沿给定轴 |
|
左右翻转张量,返回一个新张量。 |
|
上下翻转张量,返回一个新张量。 |
|
计算 |
|
在由 |
|
计算 |
|
计算张量的直方图。 |
|
计算张量中值的直方图。 |
|
计算张量中值的多维直方图。 |
|
创建由 attr:tensors 中一维输入指定的坐标网格。 |
|
计算 |
|
返回 |
|
返回一个连续的扁平化张量。 |
|
返回一个张量,其中 |
|
重复张量的元素。 |
|
沿给定维度(或维度)滚动 |
|
在 |
|
返回 |
|
返回输入 2D 矩阵对角线元素的和。 |
|
返回矩阵(2D 张量)或矩阵批次的下三角部分 |
|
返回 |
|
返回矩阵(2D 张量)或矩阵批次的上三角部分 |
|
返回 |
|
将输入张量的某个维度扩展到多个维度。 |
|
生成 Vandermonde 矩阵。 |
|
返回 |
|
返回 |
|
如果 |
|
如果 |
BLAS and LAPACK Operations#
对存储在 |
|
对矩阵 |
|
对矩阵 |
|
对向量 |
|
对 |
|
对存储在 |
|
返回 个 2D 张量的矩阵乘积。 |
|
计算对称正定矩阵 或对称正定矩阵批次的乔里斯基分解。 |
|
在给定乔里斯基分解的情况下,计算复厄米特或实对称正定矩阵的逆。 |
|
在给定乔里斯基分解的情况下,计算具有复厄米特或实对称正定左侧(lhs)的线性方程组的解。 |
|
计算两个 1D 张量的点积。 |
|
这是直接调用 LAPACK 的 geqrf 的低级函数。 |
|
|
|
计算 1D 张量的点积。 |
|
|
|
|
|
计算方阵或矩阵批次的行列式对数。 |
|
计算矩阵或矩阵批次 |
|
使用 |
|
将 |
|
两个张量的矩阵乘积。 |
|
对矩阵 |
|
对矩阵 |
|
计算 Householder 矩阵乘积与一般矩阵的矩阵-矩阵乘积。 |
|
|
|
|
|
计算矩阵或矩阵批次 |
|
计算矩阵或矩阵批次 |
|
返回矩阵、矩阵批次或稀疏矩阵 的奇异值分解 |
|
对低秩矩阵、此类矩阵的批次或稀疏矩阵执行线性主成分分析 (PCA)。 |
|
使用无矩阵 LOBPCG 方法查找对称正定广义特征值问题的 k 个最大(或最小)特征值和对应的特征向量。 |
|
|
|
沿 |
|
沿 |
|
求解具有方阵上(或下)可逆三角矩阵 和多个右侧项 的方程组。 |
|
沿维度计算两个 1D 向量的点积。 |
Foreach Operations#
警告
此 API 处于 Beta 阶段,可能会在未来发生更改。不支持前向模式 AD。
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
实用程序#
返回 PyTorch 是否使用了 _GLIBCXX_USE_CXX11_ABI=1 构建。 |
|
返回对提供的输入张量执行算术运算后会得到的 |
|
根据类型提升 文档 中描述的 PyTorch 转换规则,确定是否允许类型转换。 |
|
返回大小和标量类型都不小于或低于 type1 或 type2 的 |
|
设置 PyTorch 操作是否必须使用“确定性”算法。 |
|
如果全局确定性标志已开启,则返回 True。 |
|
如果全局确定性标志设置为仅警告,则返回 True。 |
|
设置确定性操作的调试模式。 |
|
返回确定性操作的当前调试模式值。 |
|
设置 float32 矩阵乘法的内部精度。 |
|
返回 float32 矩阵乘法精度的当前值。 |
|
当此标志为 False(默认)时,某些 PyTorch 警告可能每个进程仅出现一次。 |
|
返回与给定设备关联的模块(例如,torch.device('cuda'),“mtia:0”,“xpu”,...)。 |
|
如果全局 warn_always 标志已开启,则返回 True。 |
|
vmap 是向量化映射; |
|
Python assert 的包装器,它是符号可追溯的。 |
符号数字#
导出路径#
警告
此功能是原型,未来可能存在破坏兼容性的更改。
export generated/exportdb/index
控制流#
警告
此功能是原型,未来可能存在破坏兼容性的更改。
有条件地应用 true_fn 或 false_fn。 |
优化#
使用 TorchDynamo 和指定的后端优化给定的模型/函数。 |