torch¶
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,其他位置为 0。 | |
| 返回一个填充未初始化数据的张量。 | |
| 返回一个与  | |
| 创建一个指定  | |
| 创建一个大小为  | |
| 返回一个与  | |
| 将浮点型张量转换为给定比例和零点的量化张量。 | |
| 将浮点张量转换为具有给定比例和零点的按通道量化张量。 | |
| 通过对量化张量进行反量化,返回一个 fp32 张量。 | |
| 计算  | 
索引、切片、连接、变异操作¶
| 返回张量的共轭视图,并转置最后两个维度。 | |
| 返回一个张量,其中包含  | |
| 在给定维度上连接给定  | |
| 
 | |
| 
 | |
| 返回  | |
| 尝试将张量拆分为指定数量的块。 | |
| 根据  | |
| 通过水平堆叠  | |
| 按深度(沿第三轴)顺序堆叠张量。 | |
| 沿由 dim 指定的轴收集值。 | |
| 根据  | |
| 按水平(列方向)顺序堆叠张量。 | |
| 有关函数描述,请参见  | |
| 有关函数描述,请参见  | |
| 有关函数描述,请参见  | |
| 返回一个新的张量,该张量使用 LongTensor 中的条目  | |
| 返回一个新的 1-D 张量,该张量根据布尔掩码  | |
| 将  | |
| 
 | |
| 返回一个新的张量,它是  | |
| 与  | |
| 返回原始张量  | |
| 返回一个与  | |
| 
 | |
| 沿选定维度在给定索引处对  | |
| 
 | |
| 将  | |
| 将  | |
| 将  | |
| 
 | |
| 
 | |
| 将张量拆分为块。 | |
| 返回一个张量,其中所有指定维度为 1 的  | |
| 沿着新维度连接一系列张量。 | |
| 是  | |
| 是  | |
| 期望  | |
| 返回一个新张量,其中包含给定索引处  | |
| 从  | |
| 将张量分割成多个子张量,所有子张量都是  | |
| 通过重复  | |
| 返回一个张量,它是  | |
| 移除张量维度。 | |
| 将扁平索引的张量转换为坐标张量的元组,这些坐标张量索引到指定形状的任意张量。 | |
| 返回一个新张量,在指定位置插入一个大小为一的维度。 | |
| 将  | |
| 将张量按顺序垂直(按行)堆叠。 | |
| 返回一个张量,其中包含从  | 
随机采样¶
| 在所有设备上将生成随机数的种子设置为非确定性随机数。 | |
| 在所有设备上设置生成随机数的种子。 | |
| 返回生成随机数的初始种子,作为 Python long。 | |
| 将随机数生成器状态作为 torch.ByteTensor 返回。 | |
| 设置随机数生成器状态。 | 
- torch.default_generator Returns the default 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) 量化张量应用批归一化。 | |
| 对由多个输入平面组成的输入量化张量应用 1D 最大池化。 | |
| 对由多个输入平面组成的输入量化张量应用 2D 最大池化。 | |
| 返回一个新的张量,其中每个元素都将  | |
| 返回一个新的张量,其中包含  | |
| 返回一个新的张量,其中包含  | |
| 逐元素计算 Python 的模运算。 | |
| 将  | |
| 返回一个新的张量,其中包含  | |
| 是  | |
| 返回一个新张量,其中包含  | |
| 此函数是 torch.sign() 对复数张量的扩展。 | |
| 测试  | |
| 返回一个新张量,其中包含  | |
| 是  | |
| 返回一个新张量,其中包含  | |
| 返回一个新张量,其中包含  | |
| 返回一个新张量,其中包含  | |
| 从  | |
| 是  | |
| 返回一个新张量,其中包含  | |
| 返回一个新张量,其中包含  | |
| 它是  | |
| 返回一个新的张量,其中包含  | |
| 它是  | 
归约操作¶
| 返回  | |
| 返回扁平化张量或沿某个维度上的最小值索引。 | |
| 返回给定维度  | |
| 返回给定维度  | |
| 计算  | |
| 测试  | |
| 测试  | |
| 返回  | |
| 返回  | |
| 返回 ( | |
| 返回给定维度  | |
| 返回  | |
| 计算指定维度上所有 非 NaN 元素的平均值。 | |
| 返回  | |
| 返回  | |
| 返回一个命名元组  | |
| 返回给定张量的矩阵范数或向量范数。 | |
| 返回所有元素的总和,将非数字 (NaN) 视为零。 | |
| 返回  | |
| 计算  | |
| 这是  | |
| 计算由  | |
| 计算由  | |
| 返回  | |
| 返回输入张量的唯一元素。 | |
| 消除每个连续的等效元素组中除第一个元素之外的所有元素。 | |
| 计算由  | |
| 计算由  | |
| 沿给定的  | 
比较运算符¶
| 此函数检查  | |
| 返回按值升序对给定维度上的张量进行排序的索引。 | |
| 计算逐元素相等性 | |
| 如果两个张量具有相同的大小和元素,则为  | |
| 逐元素计算 。 | |
| 是  | |
| 逐元素计算 。 | |
| 是  | |
| 返回一个新的张量,其中布尔元素表示  | |
| 返回一个新的张量,其中布尔元素表示每个元素是否为 有限。 | |
| 测试  | |
| 测试  | |
| 测试  | |
| 测试  | |
| 返回一个新的张量,其中布尔元素表示  | |
| 返回一个新的张量,其中布尔元素表示  | |
| 返回一个命名元组  | |
| 按元素计算 。 | |
| 是  | |
| 按元素计算 。 | |
| 是  | |
| 计算  | |
| 计算  | |
| 计算  | |
| 计算  | |
| 计算 的逐元素值。 | |
| 是  | |
| 对给定维度上的  | |
| 返回给定维度上  | |
| 对  | 
频谱运算¶
| 短时傅里叶变换 (STFT)。 | |
| 逆短时傅里叶变换。 | |
| Bartlett 窗函数。 | |
| Blackman 窗函数。 | |
| 汉明窗函数。 | |
| 汉宁窗函数。 | |
| 计算凯泽窗,窗长为  | 
其他操作¶
| 返回每个输入张量的 1 维视图,该张量具有零维。 | |
| 返回每个输入张量的 2 维视图,该张量具有零维。 | |
| 返回每个输入张量的 3 维视图,该张量具有零维。 | |
| 计算非负整数数组中每个值的频率。 | |
| 从提供的张量创建块对角矩阵。 | |
| 根据 广播语义广播给定的张量。 | |
| 将  | |
| 类似于  | |
| 返回  | |
| 对给定的张量序列执行笛卡尔积。 | |
| 计算两个行向量集合中每对向量之间的 p 范数距离。 | |
| 返回  | |
| 计算给定张量的长度为 的组合。 | |
| 估计由  | |
| 估计由  | |
| 返回  | |
| 返回一个命名元组  | |
| 返回一个命名元组  | |
| 返回  | |
| 返回  | |
| 
 | |
| 创建一个张量,其某些二维平面(由  | |
| 
 | |
| 返回  | |
| 计算给定维度上的第 n 个前向差分。 | |
| 根据爱因斯坦求和约定,使用基于符号的表示法,对输入  | |
| 通过将  | |
| 反转 n 维张量在 dims 中给定轴上的顺序。 | |
| 在左右方向翻转张量,返回一个新的张量。 | |
| 在上下方向翻转张量,返回一个新的张量。 | |
| 计算  | |
| 将一个 n 维张量在由 dims 轴指定的平面内旋转 90 度。 | |
| 计算  | |
| 计算张量的直方图。 | |
| 计算张量中值的直方图。 | |
| 计算张量中值的多分量直方图。 | |
| 创建由 attr:tensors 中的 1D 输入指定的坐标网格。 | |
| 计算  | |
| 返回  | |
| 返回一个连续的扁平化张量。 | |
| 返回一个张量,其中沿维度  | |
| 重复张量的元素。 | |
| 沿给定维度滚动张量  | |
| 从  | |
| 返回 a 和 b 在多个维度上的收缩。 | |
| 返回输入 2-D 矩阵对角线元素的总和。 | |
| 返回矩阵(2-D 张量)或矩阵批次  | |
| 在 2-by-N 张量中返回  | |
| 返回矩阵(2-D 张量)或矩阵批次  | |
| 在 2-by-N 张量中返回  | |
| 将输入张量的维度扩展到多个维度。 | |
| 生成范德蒙矩阵。 | |
| 将  | |
| 将  | |
| 如果  | |
| 如果  | 
BLAS 和 LAPACK 操作¶
| 执行存储在  | |
| 执行矩阵  | |
| 执行矩阵  | |
| 执行向量  | |
| 执行  | |
| 执行存储在  | |
| 返回 个 2D 张量的矩阵乘积。 | |
| 计算对称正定矩阵 或对称正定矩阵批次的 Cholesky 分解。 | |
| 计算给定其 Cholesky 分解的复 Hermitian 或实对称正定矩阵的逆。 | |
| 计算给定其 Cholesky 分解的复 Hermitian 或实对称正定 lhs 的线性方程组的解。 | |
| 计算两个 1D 张量的点积。 | |
| 这是直接调用 LAPACK 的 geqrf 的低级函数。 | |
| 是  | |
| 计算 1D 张量的点积。 | |
| 是  | |
| 是  | |
| 计算方阵或方阵批次的 log 行列式。 | |
| 是  | |
| 计算矩阵或矩阵批次的 LU 分解  | |
| 使用  | |
| 将  | |
| 两个张量的矩阵乘积。 | |
| 是  | |
| 是  | |
| 执行矩阵  | |
| 执行矩阵  | |
| 计算一组 Householder 矩阵与一般矩阵的矩阵乘积。 | |
| 
 | |
| 是  | |
| 计算矩阵或一批矩阵  | |
| 计算矩阵或矩阵批次的奇异值分解  | |
| 返回矩阵、矩阵批次或稀疏矩阵  的奇异值分解  | |
| 对低秩矩阵、此类矩阵的批次或稀疏矩阵执行线性主成分分析 (PCA)。 | |
| 使用无矩阵 LOBPCG 方法查找对称正定广义特征值问题的 k 个最大(或最小)特征值及其对应的特征向量。 | |
| 是  | |
| 沿着  | |
| 沿  | |
| 求解具有方形上三角或下三角可逆矩阵 和多个右手边 的方程组。 | |
| 计算两个 1D 向量沿一个维度的点积。 | 
Foreach 操作¶
警告
此 API 处于测试阶段,可能会在将来发生更改。不支持前向模式 AD。
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | |
| 将  | 
实用程序¶
| 返回 PyTorch 是否使用 _GLIBCXX_USE_CXX11_ABI=1 构建。 | |
| 返回对提供的输入张量执行算术运算后产生的  | |
| 确定在 PyTorch 类型提升 文档 中描述的 PyTorch 类型转换规则下是否允许类型转换。 | |
| 返回 | |
| 设置 PyTorch 操作是否必须使用“确定性”算法。 | |
| 如果全局确定性标志已打开,则返回 True。 | |
| 如果全局确定性标志设置为仅警告,则返回 True。 | |
| 设置确定性操作的调试模式。 | |
| 返回确定性操作的调试模式的当前值。 | |
| 设置 float32 矩阵乘法的内部精度。 | |
| 返回 float32 矩阵乘法精度的当前值。 | |
| 当此标志为 False(默认值)时,某些 PyTorch 警告可能每个进程只出现一次。 | |
| 如果全局 warn_always 标志已打开,则返回 True。 | |
| vmap 是向量化映射; | |
| Python 的 assert 的包装器,它可以符号化地追踪。 | 
符号数字¶
- class torch.SymBool(node)[source]¶
- 类似于布尔值(包括魔术方法),但将所有对包装节点的操作重定向。这在符号形状工作流程中用于符号记录操作。 - 与普通布尔值不同,普通布尔运算符将强制执行额外的保护,而不是符号评估。使用按位运算符来处理这种情况。 
| SymInt 感知浮点类型转换实用程序。 | |
| SymInt 感知整数类型转换实用程序。 | |
| SymInt 感知 max() 实用程序。 | |
| SymInt 感知 max() 实用程序。 | |
| SymInt 感知逻辑否定实用程序。 | |