火炬 ¶
火炬包包含多维张量的数据结构,并定义了在这些张量上的数学运算。此外,它还提供了许多用于高效序列化张量和任意类型的实用工具,以及其他有用的实用工具。
它有一个 CUDA 对应版本,允许您在具有计算能力>= 3.0 的 NVIDIA GPU 上运行您的张量计算。
张量 ¶
返回 True,如果 obj 是 PyTorch 张量。 |
|
返回 True,如果 obj 是 PyTorch 存储对象。 |
|
返回 True,如果 |
|
返回 True,如果 |
|
返回 True,如果 |
|
如果 |
|
将默认的浮点数据类型设置为 |
|
获取当前默认的浮点数据类型 |
|
设置默认的 |
|
获取默认的 |
|
返回 |
|
设置打印选项。 |
|
禁用 CPU 上的非规范化浮点数。 |
创建操作 ¶
注意
随机采样创建操作列在“随机采样”下,包括: torch.rand()
torch.rand_like()
torch.randn()
torch.randn_like()
torch.randint()
torch.randint_like()
torch.randperm()
。您还可以使用 torch.empty()
与就地随机采样方法一起创建 torch.Tensor
,其值来自更广泛的分布范围。
通过复制 |
|
在指定的 |
|
在指定的 |
|
在指定的 |
|
构建一个在指定 |
|
构建一个在指定 |
|
将 |
|
将 |
|
创建一个视图,该视图是现有 torch.Tensor |
|
创建一个由内存映射文件支持的存储器后端的 CPU 张量。 |
|
从一个 |
|
将外部库中的张量转换为 |
|
从实现 Python 缓冲区协议的对象创建一个 1 维 |
|
返回一个填充了标量值 0 的张量,形状由变量参数 |
|
返回一个填充了标量值 0 的张量,大小与 |
|
返回一个填充了标量值 1 的张量,其形状由变量参数 |
|
返回一个填充了标量值 1 的张量,其大小与 |
|
返回一个大小为 的一维张量,其值从区间 |
|
返回一个大小为 的一维张量,其值从 |
|
创建一个大小为 |
|
创建一个大小为 |
|
返回一个对角线为 1,其余位置为 0 的 2-D 张量。 |
|
返回一个填充未初始化数据的张量。 |
|
返回与 |
|
创建一个具有指定 |
|
创建一个大小为 |
|
返回一个与 |
|
将浮点张量转换为具有给定标度和零点的量化张量。 |
|
将浮点张量转换为具有给定标度和零点的按通道量化的张量。 |
|
通过反量化量化张量返回一个 fp32 张量。 |
|
构建一个复数张量,其实部等于 |
|
构建一个复数张量,其元素对应于绝对值为 |
|
对 |
索引、切片、连接、修改操作
返回一个张量,其共轭且最后两个维度已转置的视图。 |
|
返回一个包含所有非零元素索引的张量。 |
|
在指定维度上连接给定的张量序列 |
|
|
|
|
|
返回一个翻转共轭位的 |
|
尝试将张量分割成指定的块数。 |
|
将具有三个或更多维度的张量 |
|
通过水平堆叠张量 |
|
按序列深度堆叠张量(沿第三个轴)。 |
|
沿由 dim 指定的轴收集值。 |
|
将具有一个或多个维度的张量 |
|
水平(按列)顺序堆叠张量。 |
|
请参阅 |
|
请参阅 |
|
请参阅 |
|
返回一个新的张量,该张量沿维度 |
|
返回一个新的 1-D 张量,该张量根据布尔掩码 |
|
将 |
|
|
|
返回一个新的张量,它是 |
|
与 |
|
返回原始张量 |
|
返回一个与 |
|
|
|
沿选定维度在给定索引处切割 |
|
|
|
将 |
|
将 |
|
将 |
|
|
|
|
|
将张量分割成块。 |
|
返回一个移除了 |
|
沿新维度连接一系列张量。 |
|
|
|
|
|
预期 |
|
返回一个新张量,包含 |
|
从 |
|
将张量分割成多个子张量,所有子张量都是 |
|
通过重复 |
|
返回一个张量,它是 |
|
移除张量维度。 |
|
将平面索引的张量转换为坐标张量的元组,这些坐标张量可以索引到指定形状的任意张量。 |
|
在指定位置插入一个大小为 1 的维度的新张量。 |
|
将具有两个或更多维度的张量 |
|
将张量按顺序垂直堆叠(按行)。 |
|
根据需要从 |
加速器 ¶
在 PyTorch 仓库中,我们将“加速器”定义为与 CPU 一起使用以加速计算的 torch.device
。这些设备使用异步执行方案,以 torch.Stream
和 torch.Event
作为它们执行同步的主要方式。我们还假设在给定的主机上一次只能有一个这样的加速器可用。这使得我们可以将当前加速器用作相关概念(如固定内存、Stream 设备类型、FSDP 等)的默认设备。
截至 today,加速器设备包括(不分先后)“CUDA”、“MTIA”、“XPU”、“MPS”、“HPU”和 PrivateUse1(许多设备不在 PyTorch 仓库本身中)。
PyTorch 生态系统中的许多工具使用 fork 来创建子进程(例如数据加载或操作内并行),因此尽可能延迟任何可能阻止进一步 fork 的操作是很重要的。在这里尤其重要,因为大多数加速器的初始化都有这种效果。在实践中,你应该记住,默认情况下检查 torch.accelerator.current_accelerator()
是一个编译时检查,因此总是 fork 安全的。相反,向此函数传递 check_available=True
标志或调用 torch.accelerator.is_available()
通常会导致后续 fork 失败。
一些后端提供了实验性的 opt-in 选项,以使运行时可用性检查 fork 安全。例如,当使用 CUDA 设备时,可以使用 PYTORCH_NVML_BASED_CUDA_CHECK=1
。
按照先进先出(FIFO)顺序异步执行相应任务的有序队列。 |
|
查询并记录流状态,以识别或控制流之间的依赖关系并测量时间。 |
生成器 ¶
创建并返回一个生成器对象,该对象管理产生伪随机数的算法状态。 |
随机抽样
将生成随机数的种子设置为所有设备上的非确定性随机数。 |
|
将所有设备上生成随机数的种子设置为。 |
|
返回生成随机数的初始种子,作为 Python 长整型。 |
|
返回随机数生成器的状态,以 torch.ByteTensor 的形式。 |
|
设置随机数生成器的状态。 |
- 返回默认的 CPU torch.Generator
从伯努利分布中抽取二进制随机数(0 或 1)。 |
|
返回一个张量,其中每行包含从多项式(更严格的定义是多元的,请参阅 |
|
返回一个张量,其中的随机数是从给定的均值和标准差的不同正态分布中抽取的。 |
|
返回一个与 |
|
返回一个填充有均匀分布在 区间上的随机数的张量。 |
|
返回一个与 |
|
返回一个填充有在 |
|
返回一个与 Tensor |
|
返回一个填充有均值为 0、方差为 1 的随机数的正态分布张量(也称为标准正态分布)。 |
|
返回一个与 |
|
返回从 |
原地随机采样
在张量上还定义了一些原地随机采样的函数。点击查看它们的文档:
torch.Tensor.bernoulli_()
-torch.bernoulli()
的原地版本torch.Tensor.cauchy_()
- 从柯西分布中抽取的数字torch.Tensor.exponential_()
- 从指数分布中抽取的数字torch.Tensor.geometric_()
- 从几何分布中抽取的元素torch.Tensor.log_normal_()
- 对数正态分布的样本torch.Tensor.normal_()
-torch.normal()
的就地版本来自离散均匀分布的样本数
来自连续均匀分布的样本数
准随机抽样
|
序列化 ¶
将对象保存到磁盘文件中。 |
|
从文件中加载使用 |
并行性 ¶
返回用于并行化 CPU 操作的线程数。 |
|
设置用于 CPU 内部并行处理的线程数。 |
|
返回用于 CPU 间操作并行处理的线程数(例如。 |
|
设置用于间操作并行处理的线程数(例如。 |
局部禁用梯度计算
上下文管理器 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
禁用梯度计算的上下文管理器。 |
|
启用梯度计算的上下文管理器。 |
|
设置梯度计算开启或关闭的上下文管理器。 |
|
如果当前启用梯度模式,则返回 True。 |
|
上下文管理器,用于启用或禁用推理模式。 |
|
如果推理模式当前已启用,则返回 True。 |
数学运算 ¶
常量 ¶
|
浮点正无穷大。别名 |
|
浮点数“非数字”值。此值不是一个合法的数字。 |
点操作符
计算每个元素在 |
|
|
|
计算每个元素在 |
|
|
|
返回一个新张量,包含 |
|
|
|
将 |
|
对 |
|
对 |
|
计算给定 |
|
返回一个新张量,包含 |
|
|
|
返回一个新张量,包含 |
|
|
|
返回一个新张量,包含 |
|
|
|
返回一个新张量,包含 |
|
|
|
考虑象限的 的逐元素反正切。 |
|
|
|
计算给定输入张量的按位非。 |
|
计算 |
|
计算 |
|
计算 |
|
计算对 |
|
计算对 |
|
返回一个新张量,其中包含 |
|
将 |
|
|
|
计算给定 |
|
创建一个具有 |
|
返回一个新张量,其中包含 |
|
返回一个新张量,其中包含 |
|
将 |
|
将输入 |
|
|
|
|
|
|
|
|
|
|
|
返回一个新张量,其元素为输入张量 |
|
|
|
|
|
返回一个新张量,其中 |
|
返回一个新张量,其中 |
|
|
|
将 |
|
返回一个新张量,包含 |
|
应用 C++的 std::fmod 逐元素操作。 |
|
计算每个元素的分数部分。 |
|
将 |
|
使用二阶精确中心差分法以及边界处的一阶或二阶估计,在一维或多维上估计函数 的梯度。 |
|
返回一个包含 |
|
将 |
|
根据标量或张量 |
|
计算伽玛函数在 |
|
返回一个新张量,包含 |
|
返回一个新张量,其元素为 |
|
返回一个新张量,其元素为(1 + |
|
返回一个新张量,其元素为 |
|
输入指数幂之和的对数。 |
|
输入在 2 为底下的指数幂之和的对数。 |
|
计算给定输入张量的逐元素逻辑与。 |
|
计算给定输入张量的逐元素逻辑非。 |
|
计算给定输入张量的逐元素逻辑或。 |
|
计算给定输入张量的逐元素逻辑异或。 |
|
|
|
给定直角三角形的腿,返回其斜边。 |
|
|
|
|
|
|
|
将 |
|
|
|
|
|
将 |
|
返回一个新张量,其元素为 |
|
|
|
按元素方式返回 |
|
|
|
返回 |
|
将 |
|
对一个 4D(NCHW)量化张量应用批量归一化。 |
|
对由多个输入平面组成的输入量化张量应用 1D 最大池化。 |
|
对由多个输入平面组成的输入量化张量应用 2D 最大池化。 |
|
将 |
|
返回包含 |
|
返回 |
|
计算 Python 的逐元素取模运算。 |
|
将 |
|
返回一个新张量,其中包含 |
|
|
|
返回一个新张量,其中包含 |
|
这个函数是 torch.sign()对复数张量的扩展。 |
|
测试 |
|
返回一个新张量,其中包含 |
|
|
|
返回一个新张量,其元素为 |
|
|
|
返回一个新张量,其元素为 |
|
返回一个新张量,其元素为 |
|
从 |
|
|
|
返回一个新张量,其元素为 |
|
返回一个新张量,其元素为 |
|
|
|
返回一个新张量,其元素为 |
|
|
累加操作符 §
返回 |
|
返回展平张量或沿维度的最小值索引。 |
|
返回 |
|
返回 |
|
计算张量 |
|
测试 |
|
测试 |
|
返回张量 |
|
返回张量 |
|
返回( |
|
返回给定维度 |
|
计算指定维度上所有非 NaN 元素的均值。 |
|
返回 |
|
返回 |
|
返回一个 namedtuple |
|
返回给定张量的矩阵范数或向量范数。 |
|
返回所有元素的总和,将非数字(NaNs)视为零。 |
|
返回 |
|
计算沿 |
|
这是一种变体,它“忽略” |
|
计算由 |
|
计算指定维度 |
|
返回 |
|
返回输入张量中的唯一元素。 |
|
删除每个连续等效元素组中除了第一个元素之外的所有元素。 |
|
计算由 |
|
计算指定维度 |
|
统计张量 |
比较操作符
此函数检查 |
|
返回按给定维度按值升序排序张量的索引。 |
|
计算逐元素相等性。 |
|
|
|
计算元素级 |
|
|
|
计算元素级 |
|
|
|
返回一个新张量,其中包含布尔元素,表示 |
|
返回一个新张量,其中包含布尔元素,表示每个元素是否有限。 |
|
测试 |
|
测试 |
|
测试 |
|
测试 |
|
返回一个新张量,其中的布尔元素表示 |
|
返回一个新张量,其中的布尔元素表示 |
|
返回一个命名元组 |
|
计算元素级 |
|
|
|
计算元素级 |
|
|
|
计算元素-wise |
|
计算元素-wise |
|
计算元素-wise |
|
计算元素-wise |
|
计算元素级 |
|
|
|
按给定维度对 |
|
返回给定 |
|
按值升序对 |
光谱操作 ¶
短时傅里叶变换(STFT)。 |
|
逆短时傅里叶变换。 |
|
巴特莱特窗口函数 |
|
布朗曼窗口函数 |
|
汉明窗口函数 |
|
汉宁窗口函数 |
|
计算长度为 |
其他操作 ¶
返回每个输入张量的 1 维视图,其中没有零维。 |
|
返回每个输入张量的二维视图,其中零维数为 0。 |
|
返回每个输入张量的三维视图,其中零维数为 0。 |
|
计算非负整数数组中每个值的频率。 |
|
从提供的张量创建块对角矩阵。 |
|
根据广播语义广播给定的张量。 |
|
将 |
|
与 |
|
返回每个值所属的桶的索引,其中桶的边界由 |
|
对给定的张量序列进行笛卡尔积。 |
|
计算两个行向量集合中每对之间的批处理 p-范数距离。 |
|
返回 |
|
计算给定张量的长度为 的组合。 |
|
估计由 |
|
估计由 |
|
返回 |
|
返回一个 namedtuple |
|
返回一个命名元组 |
|
返回 |
|
返回 |
|
|
|
创建一个张量,其中某些二维平面的对角线(由 |
|
|
|
返回 |
|
计算给定维度上的 n 阶前向差分。 |
|
沿着使用爱因斯坦求和约定表示法指定的维度对输入 |
|
将 |
|
沿给定轴在 dims 中对 n 维张量顺序进行反转。 |
|
在左右方向上翻转张量,返回一个新的张量。 |
|
在上下方向上翻转张量,返回一个新的张量。 |
|
计算由 |
|
在指定维度轴的平面上将 n 维张量旋转 90 度。 |
|
计算元素-wise 的最大公约数(GCD) |
|
计算张量的直方图。 |
|
计算张量中值的直方图。 |
|
计算张量中值的多元直方图。 |
|
根据 attr:tensors 中的 1D 输入创建坐标网格。 |
|
计算 |
|
返回 |
|
返回一个连续的展平张量。 |
|
返回一个张量,其中每个沿维度 |
|
重复张量的元素。 |
|
将张量 |
|
从 |
|
返回 a 和 b 在多个维度上的收缩。 |
|
返回输入 2-D 矩阵对角线元素的和。 |
|
返回矩阵(2-D 张量)或矩阵批量的下三角部分( |
|
返回一个 |
|
返回矩阵(2-D 张量)或矩阵批量的上三角部分( |
|
返回一个 2-by-N 张量上三角部分的索引,其中第一行包含所有索引的行坐标,第二行包含列坐标。 |
|
在多个维度上扩展输入张量的一个维度。 |
|
生成 Vandermonde 矩阵。 |
|
返回 |
|
返回 |
|
如果 |
|
如果 |
BLAS 和 LAPACK 操作
执行存储在 |
|
执行矩阵 |
|
执行矩阵 |
|
执行向量 |
|
执行矩阵 |
|
执行存储在 |
|
返回 2-D 张量的矩阵乘积。 |
|
计算对称正定矩阵 或对称正定矩阵批次的 Cholesky 分解。 |
|
计算给定其 Cholesky 分解的复 Hermitian 或实对称正定矩阵的逆。 |
|
计算给定其 Cholesky 分解的复 Hermitian 或实对称正定 lhs 的线性方程组的解。 |
|
计算两个一维张量的点积。 |
|
这是一个用于直接调用 LAPACK 的 geqrf 的低级函数。 |
|
|
|
计算一维张量的点积。 |
|
|
|
|
|
计算方阵或方阵批次的对数行列式。 |
|
|
|
计算矩阵或矩阵批次的 LU 分解。 |
|
返回使用 A 的带部分主元 LU 分解的线性系统 的 LU 求解。 |
|
将由 |
|
两个张量的矩阵乘积。 |
|
|
|
|
|
执行矩阵 |
|
执行矩阵 |
|
|
|
计算 Householder 矩阵乘积与一般矩阵的矩阵乘法。 |
|
外积 |
|
|
|
计算矩阵或矩阵批量的 QR 分解,并返回一个包含张量的 namedtuple(Q, R),其中 是正交矩阵或正交矩阵批, 是上三角矩阵或上三角矩阵批。 |
|
计算矩阵或矩阵批量的奇异值分解 |
|
返回矩阵、矩阵批或稀疏矩阵的奇异值分解 |
|
对低秩矩阵、此类矩阵的批或稀疏矩阵执行线性主成分分析(PCA)。 |
|
使用无矩阵的 LOBPCG 方法,找到对称正定广义特征值问题的 k 个最大(或最小)特征值及其对应的特征向量。 |
|
|
|
沿 |
|
累计计算沿 |
|
解具有平方上三角或下三角可逆矩阵 和多个右端项 的方程组。 |
|
沿一个维度计算两个 1D 向量的点积。 |
每次操作 ¶
警告
此 API 处于测试阶段,未来可能会有所变动。不支持前向模式 AD。
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
公用事业
返回 PyTorch 是否使用 _GLIBCXX_USE_CXX11_ABI=1 编译 |
|
返回对提供的输入张量执行算术运算的结果 |
|
判断在 PyTorch 类型提升规则下是否允许类型转换,这些规则在类型提升文档中描述 |
|
返回具有最小大小和标量类型的 |
|
设置 PyTorch 操作是否必须使用“确定性”算法。 |
|
如果全局确定性标志已开启,则返回 True。 |
|
如果全局确定性标志设置为仅警告,则返回 True。 |
|
设置确定性操作的调试模式。 |
|
返回确定性操作的调试模式当前值。 |
|
设置 float32 矩阵乘法的内部精度。 |
|
返回 float32 矩阵乘法精度的当前值。 |
|
当此标志为 False(默认)时,一些 PyTorch 警告可能只在每个进程中出现一次。 |
|
返回与给定设备关联的模块(例如,torch.device('cuda'),"mtia:0","xpu",...)。 |
|
如果全局 warn_always 标志已开启,则返回 True。 |
|
vmap 是向量化映射; |
|
Python 的 assert 的包装器,可进行符号跟踪。 |
符号数 ¶
- class torch.SymFloat(node)[source][source]¶
类似于浮点数(包括魔术方法),但将所有操作重定向到包装的节点。这特别用于在符号形状工作流程中记录操作。
- conjugate()[来源][来源] ¶
返回浮点数的复共轭。
- 返回类型:
- hex()[来源][来源] ¶
返回浮点数的十六进制表示。
- 返回类型:
- is_integer()[来源][来源] ¶
判断浮点数是否为整数。
- class torch.SymBool(node)[source][source]
类似于 bool(包括魔术方法),但将所有对包装节点的操作重定向。这特别用于在符号形状工作流程中符号记录操作。
与常规 bool 不同,常规布尔运算将强制执行额外的守卫而不是符号评估。请使用位运算符来处理此情况。
具有符号整数感知的浮点数转换实用工具。 |
|
具有符号整数感知的整数转换实用工具。 |
|
具有符号整数感知的 max 函数,避免在 a < b 时分支。 |
|
具有符号整数感知的 min()函数。 |
|
基于符号整数感知的逻辑否定实用工具。 |
|
多元加法,对于长列表来说比迭代二进制加法计算更快。 |
导出路径 ¶
警告
此功能为原型,未来可能存在兼容性破坏的更改。
导出生成的/exportdb/index
控制流 ¶
警告
该功能是一个原型,未来可能会有不兼容的更改。
条件性地应用 true_fn 或 false_fn。 |
优化 ¶
使用 TorchDynamo 和指定后端优化给定的模型/函数。 |