torch#
创建于:2016年12月23日 | 最后更新于:2025年3月10日
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
。
通过复制 |
|
构造一个 COO(坐标)格式的稀疏张量,在给定 |
|
构造一个 CSR(压缩稀疏行)格式的稀疏张量,在给定 |
|
构造一个 CSC(压缩稀疏列)格式的稀疏张量,在给定 |
|
构造一个 BSR(块压缩稀疏行)格式的稀疏张量,在给定 |
|
构造一个 BSC(块压缩稀疏列)格式的稀疏张量,在给定 |
|
将 |
|
将 |
|
创建现有 torch.Tensor |
|
创建一个由内存映射文件支持的存储的 CPU 张量。 |
|
从 |
|
将外部库中的张量转换为 |
|
从实现 Python 缓冲区协议的对象创建 1 维 |
|
返回一个用标量值 0 填充的张量,其形状由可变参数 |
|
返回一个用标量值 0 填充的张量,其大小与 |
|
返回一个用标量值 1 填充的张量,其形状由可变参数 |
|
返回一个用标量值 1 填充的张量,其大小与 |
|
返回一个大小为 的 1 维张量,其值从区间 |
|
返回一个大小为 的 1 维张量,其值从 |
|
创建一个一维张量,大小为 |
|
创建一个大小为 |
|
返回一个对角线为1,其他地方为0的二维张量。 |
|
返回一个填充了未初始化数据的张量。 |
|
返回一个未初始化的张量,其大小与 |
|
创建一个具有指定 |
|
创建一个大小为 |
|
返回一个与 |
|
将浮点张量转换为具有给定缩放和零点的量化张量。 |
|
将浮点张量转换为具有给定缩放和零点的逐通道量化张量。 |
|
通过对量化张量进行反量化,返回一个fp32张量。 |
|
计算 |
索引、切片、连接、变异操作#
返回共轭张量的视图,并转置最后两个维度。 |
|
返回一个包含 |
|
在给定维度中,连接 |
|
|
|
|
|
返回 |
|
尝试将张量分割成指定数量的块。 |
|
根据 |
|
通过水平堆叠 |
|
按深度(沿第三轴)顺序堆叠张量。 |
|
沿由 dim 指定的轴收集值。 |
|
根据 |
|
按水平(列方向)顺序堆叠张量。 |
|
请参阅 |
|
请参阅 |
|
请参阅 |
|
返回一个新张量,该张量使用LongTensor中的 |
|
返回一个新的一维张量,该张量根据BoolTensor类型的布尔掩码 |
|
将 |
|
|
|
返回一个新张量,它是 |
|
与 |
|
返回原始张量 |
|
返回一个与 |
|
|
|
沿选定维度在给定索引处切片 |
|
|
|
相对于 |
|
在给定索引处,将 |
|
在给定维度处,将 |
|
将张量分割成块。 |
|
返回一个张量,其中 |
|
沿新维度连接一系列张量。 |
|
期望 |
|
返回一个新张量,其中包含 |
|
沿给定 |
|
根据 |
|
通过重复 |
|
返回一个张量,它是 |
|
移除一个张量维度。 |
|
将扁平索引张量转换为坐标张量元组,这些坐标张量可以索引到指定形状的任意张量中。 |
|
返回一个新张量,在指定位置插入大小为1的维度。 |
|
根据 |
|
按垂直(行方向)顺序堆叠张量。 |
|
根据 |
加速器#
在 PyTorch 仓库中,我们将“加速器”定义为与 CPU 一起使用以加速计算的torch.device
。这些设备使用异步执行方案,以torch.Stream
和torch.Event
作为其主要的同步方式。我们还假设在给定主机上一次只能有一个此类加速器可用。这使得我们可以将当前加速器用作相关概念(如固定内存、Stream 设备类型、FSDP 等)的默认设备。
目前,加速器设备包括(不分先后顺序)“CUDA”、“MTIA”、“XPU”、“MPS”、“HPU”和 PrivateUse1(PyTorch 仓库本身没有的许多设备)。
PyTorch 生态系统中的许多工具使用 fork 创建子进程(例如数据加载或操作内并行),因此尽可能延迟任何会阻止进一步 fork 的操作非常重要。这在这里尤其重要,因为大多数加速器的初始化都有这种效果。实际上,您应该记住,默认情况下检查torch.accelerator.current_accelerator()
是编译时检查,因此它始终是 fork-safe 的。相反,将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.random_()
- 从离散均匀分布中采样的数字torch.Tensor.uniform_()
- 从连续均匀分布中采样的数字
准随机采样#
|
序列化#
将对象保存到磁盘文件。 |
|
从文件中加载使用 |
并行#
返回用于并行化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元素的均值。 |
|
返回 |
|
返回 |
|
返回一个命名元组 |
|
返回给定张量的矩阵范数或向量范数。 |
|
返回所有元素的总和,将非数字(NaN)视为零。 |
|
返回 |
|
计算 |
|
这是 |
|
计算由 |
|
计算由 |
|
返回 |
|
返回输入张量的唯一元素。 |
|
从每个连续的等效元素组中删除除第一个元素之外的所有元素。 |
|
计算由 |
|
计算由 |
|
计算张量 |
比较操作#
此函数检查 |
|
返回按值升序对张量沿给定维度进行排序的索引。 |
|
计算逐元素相等 |
|
如果两个张量具有相同的大小和元素,则为 |
|
逐元素计算。 |
|
|
|
逐元素计算。 |
|
|
|
返回一个新张量,其中包含布尔元素,表示 |
|
返回一个新张量,其中包含布尔元素,表示每个元素是否为有限。 |
|
测试 |
|
测试 |
|
测试 |
|
测试 |
|
返回一个新张量,其中包含布尔元素,表示 |
|
返回一个新张量,其中包含布尔元素,表示 |
|
返回一个命名元组 |
|
逐元素计算。 |
|
是 |
|
逐元素计算 。 |
|
是 |
|
计算 |
|
计算 |
|
计算 |
|
计算 |
|
逐元素计算 。 |
|
是 |
|
沿给定维度按值升序对 |
|
返回给定 |
|
沿 |
频谱操作#
短时傅里叶变换 (STFT)。 |
|
逆短时傅里叶变换。 |
|
Bartlett 窗函数。 |
|
Blackman 窗函数。 |
|
Hamming 窗函数。 |
|
Hann 窗函数。 |
|
计算窗口长度为 |
其他操作#
返回每个零维度输入张量的一维视图。 |
|
返回每个零维度输入张量的二维视图。 |
|
返回每个零维度输入张量的三维视图。 |
|
计算非负整数数组中每个值的频率。 |
|
从提供的张量创建块对角矩阵。 |
|
根据广播语义广播给定张量。 |
|
将 |
|
与 |
|
返回 |
|
对给定张量序列进行笛卡尔积。 |
|
计算两组行向量之间逐批的 p-范数距离。 |
|
返回 |
|
计算给定张量的长度为 的组合。 |
|
估计由 |
|
估计由 |
|
返回 |
|
返回命名元组 |
|
返回命名元组 |
|
返回 |
|
返回 |
|
|
|
创建一个张量,其某些二维平面(由 |
|
|
|
返回 |
|
计算沿给定维度的 n 阶前向差分。 |
|
根据爱因斯坦求和约定中指定的符号,对输入 |
|
通过将其重塑为一维张量来展平 |
|
沿 dims 中的给定轴反转 n 维张量的顺序。 |
|
沿左右方向翻转张量,返回新张量。 |
|
沿上下方向翻转张量,返回新张量。 |
|
计算 |
|
在 dims 轴指定的平面中将 n 维张量旋转 90 度。 |
|
计算 |
|
计算张量的直方图。 |
|
计算张量中值的直方图。 |
|
计算张量中值多维直方图。 |
|
创建由 attr:tensors 中一维输入指定的坐标网格。 |
|
计算 |
|
返回 |
|
返回一个连续的扁平张量。 |
|
返回一个张量,其中 |
|
重复张量的元素。 |
|
沿给定维度滚动张量 |
|
从 |
|
返回 a 和 b 在多个维度上的收缩。 |
|
返回输入二维矩阵对角线元素的和。 |
|
返回矩阵(二维张量)或矩阵批次 |
|
返回 |
|
返回矩阵(二维张量)或矩阵批次 |
|
返回 |
|
将输入张量的一个维度展开为多个维度。 |
|
生成 Vandermonde 矩阵。 |
|
返回 |
|
返回 |
|
如果 |
|
如果 |
BLAS 和 LAPACK 操作#
执行存储在 |
|
执行矩阵 |
|
执行矩阵 |
|
执行向量 |
|
执行 |
|
执行存储在 |
|
返回 个二维张量的矩阵乘积。 |
|
计算对称正定矩阵 或对称正定矩阵批次的 Cholesky 分解。 |
|
计算给定其 Cholesky 分解的复 Hermitian 或实对称正定矩阵的逆。 |
|
计算给定其 Cholesky 分解的复 Hermitian 或实对称正定左侧矩阵的线性方程组的解。 |
|
计算两个一维张量的点积。 |
|
这是一个直接调用 LAPACK 的 geqrf 的低级函数。 |
|
是 |
|
计算一维张量的点积。 |
|
是 |
|
是 |
|
计算方阵或方阵批次的对数行列式。 |
|
是 |
|
计算矩阵或矩阵批次 |
|
使用 |
|
将 |
|
两个张量的矩阵乘积。 |
|
是 |
|
是 |
|
执行矩阵 |
|
执行矩阵 |
|
计算 Householder 矩阵乘积与一般矩阵的矩阵-矩阵乘法。 |
|
|
|
是 |
|
计算矩阵或矩阵批次 |
|
计算矩阵或矩阵批次 |
|
返回矩阵、矩阵批次或稀疏矩阵 的奇异值分解 |
|
对低秩矩阵、这类矩阵的批次或稀疏矩阵执行线性主成分分析 (PCA)。 |
|
使用无矩阵 LOBPCG 方法,找到对称正定广义特征值问题的 k 个最大(或最小)特征值和相应的特征向量。 |
|
是 |
|
沿 |
|
沿 |
|
求解具有方阵上三角或下三角可逆矩阵 和多个右侧 的方程组。 |
|
计算两个一维向量沿维度的点积。 |
Foreach 操作#
警告
此 API 处于 Beta 阶段,未来可能会有兼容性破坏性更改。不支持前向模式 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.Tag#
成员
核心
cudagraph_unsafe
data_dependent_output
dynamic_output_shape
flexible_layout
generated
inplace_view
maybe_aliasing_or_mutating
needs_contiguous_strides
needs_exact_strides
needs_fixed_stride_order
nondeterministic_bitwise
nondeterministic_seeded
pointwise
pt2_compliant_tag
view_copy
- property name#