torch¶
torch 包含用于多维张量的数据结构,并定义了对这些张量的数学运算。此外,它还提供了许多实用程序,用于高效地序列化张量和任意类型,以及其他有用的实用程序。
它有一个 CUDA 对应物,使您能够在计算能力 >= 3.0 的 NVIDIA GPU 上运行张量计算。
张量¶
如果 obj 是 PyTorch 张量,则返回 True。 |
|
如果 obj 是 PyTorch 存储对象,则返回 True。 |
|
如果 |
|
如果 |
|
如果 |
|
如果 |
|
将默认浮点数据类型设置为 |
|
获取当前默认浮点 |
|
设置要在 |
|
获取要在 |
|
返回 |
|
设置打印选项。 |
|
在 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,其他位置为 0。 |
|
返回一个填充了未初始化数据的张量。 |
|
返回一个与 |
|
创建一个具有指定 |
|
创建一个大小为 |
|
返回一个与 |
|
将浮点张量转换为具有给定比例和零点的量化张量。 |
|
将浮点张量转换为具有给定比例和零点的按通道量化张量。 |
|
通过反量化量化张量返回一个 fp32 张量。 |
|
计算 |
索引、切片、连接、修改操作¶
返回张量的共轭视图,并交换最后两个维度。 |
|
返回一个张量,其中包含 |
|
在给定维度上连接给定的 |
|
|
|
|
|
返回一个 |
|
尝试将张量拆分为指定数量的块。 |
|
根据 |
|
通过水平堆叠 |
|
按深度方向(沿第三个轴)依次堆叠张量。 |
|
沿着 dim 指定的轴收集值。 |
|
根据 |
|
按水平方向(列方向)依次堆叠张量。 |
|
函数描述请参见 |
|
函数描述请参见 |
|
函数描述请参见 |
|
返回一个新的张量,该张量使用 LongTensor 类型的 |
|
返回一个新的 1 维张量,该张量根据布尔掩码 |
|
将 |
|
|
|
返回一个新的张量,它是 |
|
与 |
|
返回原始张量 |
|
返回一个与 |
|
|
|
沿着选定维度,在给定索引处对 |
|
|
|
将 |
|
将 |
|
将 |
|
|
|
将张量分割成多个块。 |
|
返回一个张量,其中 |
|
沿着新维度连接一系列张量。 |
|
|
|
|
|
期望 |
|
返回一个新的张量,其中包含 |
|
沿着给定的 |
|
沿着维度 |
|
通过重复 |
|
返回 |
|
移除一个张量维度。 |
|
将平面索引的张量转换为坐标张量的元组,该元组索引到指定形状的任意张量中。 |
|
返回一个新的张量,在指定位置插入一个大小为 1 的维度。 |
|
根据 |
|
按垂直方向(行方向)依次堆叠张量。 |
|
根据 |
生成器¶
创建并返回一个生成器对象,该对象管理生成伪随机数的算法的状态。 |
随机采样¶
在所有设备上将生成随机数的种子设置为非确定性随机数。 |
|
在所有设备上设置生成随机数的种子。 |
|
以 Python long 类型返回生成随机数的初始种子。 |
|
以 torch.ByteTensor 类型返回随机数生成器状态。 |
|
设置随机数生成器状态。 |
- torch.default_generator 返回默认的 CPU torch.Generator¶
从伯努利分布中抽取二进制随机数(0 或 1)。 |
|
返回一个张量,其中每行包含从多项式(更严格的定义是多变量,有关详细信息,请参阅 torch.distributions.multinomial.Multinomial)概率分布中采样的 |
|
返回一个张量,其中包含从独立正态分布中抽取的随机数,这些正态分布的均值和标准差是给定的。 |
|
返回一个与 |
|
返回一个张量,其中填充了从区间 上的均匀分布生成的随机数。 |
|
返回一个与 |
|
返回一个张量,其中填充了在 |
|
返回一个与张量 |
|
返回一个张量,该张量填充了来自均值为 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 上操作内并行化的线程数。 |
|
返回用于 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) 量化张量应用批归一化。 |
|
对由多个输入平面组成的输入量化张量应用一维最大池化。 |
|
对由多个输入平面组成的输入量化张量应用二维最大池化。 |
|
返回一个新张量,其中 |
|
返回一个包含 |
|
返回一个新张量,其中包含 |
|
逐元素计算 Python 的模运算。 |
|
将 |
|
返回一个新张量,其中包含 |
|
返回一个包含 |
|
此函数是 torch.sign() 对复数张量的扩展。 |
|
测试 |
|
返回一个包含 |
|
|
|
返回一个包含 |
|
返回一个包含 |
|
返回一个包含 |
|
从 |
|
|
|
返回一个包含 |
|
返回一个包含 |
|
|
|
返回一个新张量,其中包含 |
|
归约操作¶
返回 |
|
返回展平张量或沿某个维度最小值的索引。 |
|
返回 |
|
返回 |
|
计算 |
|
测试 |
|
测试 |
|
返回 |
|
返回 |
|
返回 ( |
|
返回 |
|
返回 |
|
计算沿指定维度所有 非 NaN 元素的平均值。 |
|
返回 |
|
返回 |
|
返回一个命名元组 |
|
返回给定张量的矩阵范数或向量范数。 |
|
返回所有元素的总和,将非数字 (NaN) 视为零。 |
|
返回 |
|
计算 |
|
这是 |
|
计算 |
|
计算 |
|
返回 |
|
返回输入张量的唯一元素。 |
|
从每个连续的等效元素组中删除除第一个元素以外的所有元素。 |
|
计算 |
|
计算 |
|
计算张量 |
比较操作¶
此函数检查 |
|
返回按值升序对张量沿给定维度排序的索引。 |
|
执行逐元素相等比较。 |
|
如果两个张量的大小和元素相同,则为 |
|
按元素计算 。 |
|
|
|
按元素计算 。 |
|
|
|
返回一个新的张量,其中包含布尔元素,表示 |
|
返回一个新的张量,其中包含布尔元素,表示每个元素是否为 有限。 |
|
测试 |
|
测试 |
|
测试 |
|
测试 |
|
返回一个新的张量,其中包含布尔元素,表示 |
|
返回一个新的张量,其中包含布尔元素,表示 |
|
返回一个命名元组 |
|
按元素计算 。 |
|
|
|
按元素计算 。 |
|
|
|
计算 |
|
计算 |
|
计算 |
|
计算 |
|
按元素计算 。 |
|
|
|
按值对 |
|
返回给定 |
|
按值对 |
频谱运算¶
短时傅立叶变换 (STFT)。 |
|
逆短时傅立叶变换。 |
|
Bartlett 窗函数。 |
|
Blackman 窗函数。 |
|
Hamming 窗函数。 |
|
Hann 窗函数。 |
|
使用窗口长度 |
其他操作¶
返回每个具有零维度的输入张量的一维视图。 |
|
返回每个具有零维度的输入张量的二维视图。 |
|
返回每个具有零维度的输入张量的三维视图。 |
|
统计非负整数数组中每个值的频率。 |
|
从提供的张量创建块对角矩阵。 |
|
根据 广播语义 广播给定的张量。 |
|
将 |
|
与 |
|
返回 |
|
对给定的张量序列进行笛卡尔积。 |
|
计算两组行向量中每对向量之间的批量 p 范数距离。 |
|
返回 |
|
计算给定张量的长度为 的组合。 |
|
估计由 |
|
估计由 |
|
返回 |
|
返回一个命名元组 |
|
返回一个命名元组 |
|
返回 |
|
返回 |
|
|
|
创建一个张量,其某些二维平面(由 |
|
|
|
返回 |
|
沿给定维度计算第 n 个前向差分。 |
|
使用基于爱因斯坦求和约定的符号,沿指定维度对输入 |
|
通过将 |
|
沿 dims 中给定的轴反转 n 维张量的顺序。 |
|
在左/右方向翻转张量,返回一个新的张量。 |
|
在向上/向下方向翻转张量,返回一个新的张量。 |
|
计算 |
|
在由 dims 轴指定的平面内将 n 维张量旋转 90 度。 |
|
计算 |
|
计算张量的直方图。 |
|
计算张量中值的直方图。 |
|
计算张量中值的多维直方图。 |
|
创建由 attr:tensors 中的一维输入指定的坐标网格。 |
|
计算 |
|
返回 |
|
返回一个连续的扁平化张量。 |
|
返回一个张量,其中 |
|
重复张量的元素。 |
|
沿给定维度滚动张量 |
|
从 |
|
返回 a 和 b 在多个维度上的缩并。 |
|
返回输入二维矩阵对角线元素的总和。 |
|
返回矩阵(二维张量)或矩阵批次 |
|
以 2×N 张量的形式返回 |
|
返回矩阵(二维张量)或矩阵批次 |
|
以 2×N 张量的形式返回 |
|
在多个维度上扩展输入张量的一个维度。 |
|
生成一个范德蒙矩阵。 |
|
返回 |
|
返回 |
|
如果 |
|
如果 |
BLAS 和 LAPACK 运算¶
对存储在 |
|
执行矩阵 |
|
执行矩阵 |
|
执行向量 |
|
执行 |
|
执行存储在 |
|
返回 个二维张量的矩阵乘积。 |
|
计算对称正定矩阵 或对称正定矩阵批次的 Cholesky 分解。 |
|
计算复数 Hermitian 或实数对称正定矩阵的逆矩阵,给定其 Cholesky 分解。 |
|
计算具有复数 Hermitian 或实数对称正定左侧的线性方程组的解,给定其 Cholesky 分解。 |
|
计算两个一维张量的点积。 |
|
这是一个用于直接调用 LAPACK 的 geqrf 的底层函数。 |
|
|
|
计算一维张量的点积。 |
|
计算方阵或方阵批次的行列式的对数。 |
|
计算矩阵或矩阵批次 |
|
使用 |
|
将 |
|
两个张量的矩阵乘积。 |
|
执行矩阵 |
|
执行矩阵 |
|
计算一系列 Householder 矩阵与一般矩阵的矩阵乘积。 |
|
|
|
计算矩阵或一批矩阵 |
|
计算矩阵或一批矩阵 |
|
返回矩阵、一批矩阵或稀疏矩阵 的奇异值分解 |
|
对低秩矩阵、一批此类矩阵或稀疏矩阵执行线性主成分分析 (PCA)。 |
|
使用无矩阵 LOBPCG 方法找到对称正定广义特征值问题的 k 个最大(或最小)特征值和对应的特征向量。 |
|
|
|
沿着 |
|
沿着 |
|
用一个方形上三角或下三角可逆矩阵 和多个右手边 求解方程组。 |
|
计算两个一维向量沿一个维度的点积。 |
Foreach 操作¶
警告
此 API 处于测试阶段,未来可能会发生变化。不支持前向模式 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 断言的包装器,可进行符号跟踪。 |
符号数¶
- 类 torch.SymBool(node)[源代码]¶
类似于 bool(包括魔术方法),但会重定向对包装节点的所有操作。这尤其用于在符号形状工作流中符号化地记录操作。
与常规布尔值不同,常规布尔运算符将强制执行额外的保护,而不是进行符号化求值。请改用按位运算符来处理这种情况。
支持 SymInt 的 float 转换实用程序。 |
|
支持 SymInt 的 int 转换实用程序。 |
|
支持 SymInt 的 max 实用程序,避免在 a < b 时进行分支。 |
|
支持 SymInt 的 min() 实用程序。 |
|
支持 SymInt 的逻辑非实用程序。 |
|