torch¶
torch 包包含多维张量数据结构,并定义了这些张量上的数学运算。此外,它还提供了许多用于高效序列化张量和任意类型的实用工具,以及其他有用的实用工具。
它有一个CUDA对应版本,使您能够在计算能力大于等于3.0的NVIDIA GPU上运行张量计算。
张量¶
is_tensor |
如果obj是PyTorch张量,则返回True。 |
is_storage |
如果 obj 是 PyTorch 存储对象,则返回 True。 |
is_complex |
如果 |
is_conj |
如果 |
is_floating_point |
如果 |
is_nonzero |
如果 |
设置默认数据类型 |
将默认的浮点数数据类型设置为 |
获取默认数据类型 |
获取当前默认的浮点数 |
设置默认设备 |
设置默认的 |
get_default_device |
获取默认的 |
设置默认张量类型 |
|
numel |
返回 |
set_printoptions |
设置打印选项。 |
set_flush_denormal |
禁用CPU上的非规格化浮点数。 |
创建操作¶
注意
随机采样创建操作列在 随机采样 下,包括:
torch.rand()
torch.rand_like()
torch.randn()
torch.randn_like()
torch.randint()
torch.randint_like()
torch.randperm()
您还可以使用 torch.empty()
与 就地随机采样
方法来创建 torch.Tensor
,其值从更广泛的分布中采样。
张量 |
构建一个没有自动求导历史记录的张量(也称为“叶子张量”,参见自动求导机制),通过复制 |
sparse_coo_tensor |
构建一个COO(rdinate)格式的稀疏张量,并在给定的 |
sparse_csr_tensor |
构建一个CSR(压缩稀疏行)格式的稀疏张量,并在给定的 |
sparse_csc_tensor |
构建一个CSC(压缩稀疏列)格式的稀疏张量,并在给定的 |
sparse_bsr_tensor |
构建一个BSR(块压缩稀疏行)格式的稀疏张量,在给定的 |
sparse_bsc_tensor |
构建一个BSC(块压缩稀疏列)格式的稀疏张量,在给定的 |
asarray |
将 |
as_tensor |
将 |
as_strided |
创建一个现有 torch.Tensor |
from_file |
创建一个由内存映射文件支持的存储的CPU张量。 |
from_numpy |
从 |
from_dlpack |
将来自外部库的张量转换为 |
frombuffer |
从实现 Python 缓冲协议的对象创建一个一维的 |
zeros |
返回一个填充了标量值 0 的张量,其形状由变量参数 |
zeros_like |
返回一个填充了标量值 0 的张量,其大小与 |
ones |
返回一个填充了标量值 1 的张量,其形状由变量参数 |
ones_like |
返回一个填充了标量值 1 的张量,其大小与 |
arange |
返回一个大小为 的一维张量,其值从区间 |
range |
返回一个大小为 的一维张量,其值从 |
linspace |
创建一个大小为 |
logspace |
创建一个大小为 |
eye |
返回一个对角线上为1,其他位置为0的二维张量。 |
empty |
返回一个填充了未初始化数据的张量。 |
empty_like |
返回一个与 |
empty_strided |
创建一个具有指定 |
full |
创建一个大小为 |
full_like |
返回一个与 |
quantize_per_tensor |
将浮点张量转换为具有给定比例和零点的量化张量。 |
quantize_per_channel |
将浮点张量转换为具有给定比例和零点的逐通道量化张量。 |
反量化 |
通过反量化一个量化的张量返回一个fp32张量 |
complex |
|
极坐标 |
|
heaviside |
计算 |
索引、切片、连接、变异操作¶
伴随 |
返回一个共轭且最后两个维度转置的张量视图。 |
argwhere |
返回一个包含 |
cat |
在给定的维度上连接给定的 |
concat |
别名 |
concatenate |
别名 |
conj |
返回一个视图,其中 |
chunk |
尝试将张量分割成指定数量的块。 |
dsplit |
将 |
column_stack |
通过水平堆叠 |
dstack |
按顺序深度堆叠张量(沿第三轴)。 |
gather |
沿由dim指定的轴收集值。 |
hsplit |
将 |
hstack |
按顺序水平(列方向)堆叠张量。 |
index_add |
参见 |
index_copy |
参见 |
index_reduce |
参见 |
index_select |
返回一个新的张量,该张量沿维度 |
masked_select |
返回一个新的1-D张量,该张量根据布尔掩码 |
movedim |
将 |
moveaxis |
别名用于 |
narrow |
返回一个新的张量,它是 |
narrow_copy |
与 |
非零 |
|
permute |
返回原始张量 |
重塑 |
返回一个与 |
row_stack |
别名 |
选择 |
沿着选定的维度在给定的索引处对 |
scatter |
就地版本的 |
diagonal_scatter |
将 |
select_scatter |
将 |
slice_scatter |
将 |
scatter_add |
|
scatter_reduce |
|
split |
将张量分割成多个块。 |
squeeze |
返回一个张量,移除 |
stack |
沿新维度连接一系列张量。 |
交换轴 |
|
swapdims |
|
t |
期望 |
take |
返回一个新张量,其中包含给定索引处的 |
take_along_dim |
从 |
tensor_split |
将一个张量分割成多个子张量,所有这些子张量都是 |
tile |
通过重复 |
转置 |
返回一个张量的转置版本,该张量是 |
unbind |
移除一个张量维度。 |
unravel_index |
将一个扁平索引的张量转换为一组坐标张量的元组,这些坐标张量可以索引到具有指定形状的任意张量中。 |
unsqueeze |
返回在指定位置插入大小为1的新维度的新张量。 |
vsplit |
将 |
vstack |
按顺序垂直(行方向)堆叠张量。 |
where |
返回一个张量,其中的元素根据 |
随机抽样¶
种子 |
设置生成随机数的种子为一个非确定性的随机数。 |
manual_seed |
设置生成随机数的种子。 |
初始种子 |
返回用于生成随机数的初始种子,作为Python 长整型。 |
get_rng_state |
返回随机数生成器状态为 torch.ByteTensor。 |
设置随机数生成器状态 |
设置随机数生成器的状态。 |
- torch.default_generator Returns the default CPU torch.Generator¶
bernoulli |
从伯努利分布中绘制二元随机数(0 或 1)。 |
multinomial |
返回一个张量,其中每一行包含从张量 |
normal |
返回一个由随机数组成的张量,这些随机数来自具有给定均值和标准差的独立正态分布。 |
泊松 |
返回一个与 |
rand |
返回一个填充了从区间 上的均匀分布随机数的张量。 |
rand_like |
返回一个与 |
randint |
返回一个填充了随机整数的张量,这些整数是在 |
randint_like |
返回一个与张量 |
randn |
返回一个填充了从均值为0、方差为1的正态分布(也称为标准正态分布)中随机数的张量。 |
randn_like |
返回一个与 |
randperm |
返回从 |
原地随机采样¶
在张量上还定义了一些就地随机采样函数。点击查看它们的文档:
torch.Tensor.cauchy_()
- 从柯西分布中提取的数字torch.Tensor.exponential_()
- 从指数分布中抽取的数字torch.Tensor.geometric_()
- 从几何分布中抽取的元素torch.Tensor.log_normal_()
- 从对数正态分布中采样torch.Tensor.random_()
- 从离散均匀分布中采样的数字torch.Tensor.uniform_()
- 从连续均匀分布中采样的数字
准随机采样¶
The |
序列化¶
保存 |
将对象保存到磁盘文件中。 |
加载 |
从文件加载使用 |
并行性¶
get_num_threads |
返回用于并行化CPU操作的线程数 |
设置线程数 |
设置用于CPU上内部操作并行的线程数。 |
get_num_interop_threads |
返回用于CPU上互操作并行性的线程数(例如)。 |
set_num_interop_threads |
设置用于互操作并行性的线程数(例如。 |
本地禁用梯度计算¶
上下文管理器 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) # 这也可以作为一个函数使用
>>> y = x * 2
>>> y.requires_grad
True
>>> torch.set_grad_enabled(False)
>>> y = x * 2
>>> y.requires_grad
False
no_grad |
禁用梯度计算的上下文管理器。 |
enable_grad |
上下文管理器,用于启用梯度计算。 |
上下文管理器,用于开启或关闭梯度计算。 |
|
is_grad_enabled |
如果当前启用了梯度模式,则返回 True。 |
上下文管理器,用于启用或禁用推理模式。 |
|
is_inference_mode_enabled |
如果当前启用了推理模式,则返回 True。 |
数学运算¶
逐点操作¶
绝对值 |
计算 |
绝对值 |
别名用于 |
acos |
计算 |
arccos |
别名用于 |
acosh |
返回一个新的张量,其中包含 |
arccosh |
别名用于 |
add |
将 |
addcdiv |
对 |
addcmul |
对 |
角度 |
计算给定 |
asin |
返回一个新的张量,其中包含 |
arcsin |
别名用于 |
asinh |
返回一个新的张量,其中包含 |
arcsinh |
别名 |
atan |
返回一个新的张量,包含 |
arctan |
别名用于 |
atanh |
返回一个新的张量,其中包含 |
arctanh |
别名 |
atan2 |
逐元素的反正切值 ,考虑了象限。 |
arctan2 |
别名 |
bitwise_not |
计算给定输入张量的按位取反。 |
bitwise_and |
计算 |
bitwise_or |
计算 |
按位异或 |
计算 |
bitwise_left_shift |
计算 |
bitwise_right_shift |
计算 |
ceil |
返回一个新的张量,其中包含 |
clamp |
|
clip |
别名用于 |
conj_physical |
计算给定 |
copysign |
创建一个新的浮点型张量,其大小为 |
cos |
返回一个新的张量,其中包含 |
cosh |
返回一个新的张量,其中包含 |
deg2rad |
返回一个新的张量,其中包含将 |
div |
将输入的每个元素 |
divide |
别名用于 |
digamma |
|
erf |
别名用于 |
erfc |
别名用于 |
erfinv |
|
exp |
返回一个新的张量,其中包含输入张量 |
exp2 |
别名用于 |
expm1 |
|
fake_quantize_per_channel_affine |
返回一个新的张量,使用 |
fake_quantize_per_tensor_affine |
返回一个新的张量,该张量使用 |
fix |
别名用于 |
float_power |
将 |
floor |
返回一个新的张量,其中包含 |
floor_divide |
|
fmod |
逐元素应用 C++ 的 std::fmod。 |
frac |
计算 |
frexp |
将 |
梯度 |
使用二阶精确中心差分法和边界处的一阶或二阶估计,估计函数在多维中的一阶梯度。 |
imag |
返回一个包含 |
ldexp |
将 |
lerp |
对两个张量 |
lgamma |
计算伽马函数在 |
log |
返回一个新的张量,其中包含 |
log10 |
返回一个新的张量,其中包含 |
log1p |
返回一个新的张量,包含(1 + |
log2 |
返回一个新的张量,其中包含 |
logaddexp |
输入的指数和的对数。 |
logaddexp2 |
以2为底的输入的指数和的对数。 |
logical_and |
计算给定输入张量的元素逻辑与。 |
逻辑非 |
计算给定输入张量的元素逻辑非。 |
logical_or |
计算给定输入张量的元素逻辑或。 |
逻辑异或 |
计算给定输入张量的元素逻辑异或。 |
logit |
别名用于 |
hypot |
给定一个直角三角形的两条直角边,返回其斜边。 |
i0 |
|
igamma |
|
igammac |
|
mul |
将 |
multiply |
别名用于 |
mvlgamma |
|
nan_to_num |
替换 |
neg |
返回一个新的张量,其中包含 |
negative |
别名用于 |
nextafter |
返回 |
polygamma |
|
positive |
返回 |
pow |
将 |
quantized_batch_norm |
对一个4D(NCHW)量化张量应用批量归一化。 |
quantized_max_pool1d |
对由多个输入平面组成的输入量化张量进行一维最大池化操作。 |
quantized_max_pool2d |
对由多个输入平面组成的输入量化张量应用2D最大池化。 |
rad2deg |
返回一个新的张量,其中包含将 |
real |
返回包含 |
倒数 |
返回一个新的张量,其中包含 |
余数 |
逐元素计算 Python 的取模运算。 |
round |
将 |
rsqrt |
返回一个新的张量,其中包含 |
sigmoid |
别名用于 |
符号 |
返回一个新的张量,其中包含 |
sgn |
此函数是 torch.sign() 对复数张量的扩展。 |
signbit |
测试 |
sin |
返回一个新的张量,其中包含 |
sinc |
|
sinh |
返回一个新的张量,其中包含 |
softmax |
|
sqrt |
返回一个新的张量,其中包含 |
平方 |
返回一个新的张量,其中包含 |
sub |
从 |
subtract |
别名用于 |
tan |
返回一个新的张量,其中包含 |
tanh |
返回一个新的张量,其中包含 |
true_divide |
别名,用于 |
trunc |
返回一个新的张量,其中包含 |
xlogy |
别名用于 |
归约操作¶
argmax |
返回 |
argmin |
返回展平张量或沿某个维度最小值的索引 |
amax |
返回在给定维度 |
amin |
返回在给定维度 |
aminmax |
计算 |
all |
测试 |
any |
测试 |
最大值 |
返回 |
最小值 |
返回 |
dist |
返回 ( |
logsumexp |
返回给定维度 |
均值 |
返回 |
nanmean |
计算指定维度上所有非NaN元素的平均值。 |
中位数 |
返回 |
nanmedian |
返回忽略 |
mode |
返回一个namedtuple |
norm |
返回给定张量的矩阵范数或向量范数。 |
nansum |
返回所有元素的和,将非数值(NaNs)视为零。 |
prod |
返回 |
quantile |
计算沿维度 |
nanquantile |
这是 |
std |
计算由 |
std_mean |
计算在 |
sum |
返回 |
唯一 |
返回输入张量的唯一元素。 |
unique_consecutive |
消除每个连续的等效元素组中除第一个元素之外的所有元素。 |
var |
计算由 |
var_mean |
计算在由 |
count_nonzero |
计算张量 |
比较操作¶
allclose |
此函数检查 |
argsort |
返回按值升序对给定维度上的张量进行排序的索引。 |
eq |
计算元素逐个相等性 |
equal |
|
ge |
计算 逐元素。 |
greater_equal |
别名用于 |
gt |
计算 逐元素。 |
greater |
别名用于 |
isclose |
返回一个新的张量,其中布尔元素表示 |
isfinite |
返回一个包含布尔元素的新张量,表示每个元素是否为有限。 |
isin |
测试 |
isinf |
测试 |
isposinf |
测试 |
isneginf |
测试 |
isnan |
返回一个包含布尔元素的新张量,表示 |
isreal |
返回一个包含布尔元素的新张量,表示 |
kthvalue |
返回一个命名元组 |
le |
计算 逐元素。 |
less_equal |
别名用于 |
lt |
计算 逐元素。 |
less |
别名用于 |
最大值 |
计算 |
最小值 |
计算 |
fmax |
计算 |
fmin |
计算 |
ne |
计算 逐元素。 |
not_equal |
别名用于 |
排序 |
对 |
topk |
返回给定 |
msort |
对 |
光谱操作¶
stft |
短时傅里叶变换 (STFT)。 |
istft |
逆短时傅里叶变换。 |
bartlett_window |
Bartlett 窗口函数。 |
blackman_window |
布莱克曼窗函数。 |
hamming_window |
汉明窗函数。 |
hann_window |
汉恩窗函数。 |
kaiser_window |
计算具有窗口长度 |
其他操作¶
atleast_1d |
返回每个输入张量的零维度的1维视图。 |
atleast_2d |
返回每个输入张量的二维视图,其中零维度被移除。 |
atleast_3d |
返回每个输入张量的三维视图,其中零维度。 |
bincount |
计算数组中每个非负整数值的频率。 |
block_diag |
从提供的张量创建一个块对角矩阵。 |
broadcast_tensors |
根据广播语义广播给定的张量。 |
broadcast_to |
将 |
broadcast_shapes |
类似于 |
bucketize |
返回每个值在 |
cartesian_prod |
对给定的张量序列进行笛卡尔积运算。 |
cdist |
计算两个行向量集合中每对向量之间的批量p范数距离。 |
克隆 |
返回 |
组合 |
计算给定张量的长度为 的组合。 |
corrcoef |
估计由 |
cov |
估计由 |
cross |
返回维度 |
cummax |
返回一个命名元组 |
cummin |
返回一个命名元组 |
cumprod |
返回在维度 |
cumsum |
返回在维度 |
diag |
|
diag_embed |
创建一个张量,其某些2D平面(由 |
diagflat |
|
对角线 |
返回 |
diff |
计算沿给定维度的第n个前向差分。 |
einsum |
基于爱因斯坦求和约定,对输入的 |
flatten |
将 |
flip |
反转n维张量沿给定维度轴的顺序。 |
fliplr |
在左/右方向翻转张量,返回一个新的张量。 |
flipud |
在上下方向翻转张量,返回一个新的张量。 |
kron |
计算克罗内克积,记为 ,由 |
rot90 |
将一个n维张量在由dims轴指定的平面内旋转90度。 |
gcd |
计算 |
histc |
计算张量的直方图。 |
直方图 |
计算张量中值的直方图。 |
histogramdd |
计算张量中值的多维直方图。 |
meshgrid |
创建由attr:tensors中的一维输入指定的坐标网格。 |
最小公倍数 |
计算 |
logcumsumexp |
返回在维度 |
ravel |
返回一个连续的展平张量。 |
renorm |
返回一个张量,其中沿维度 |
repeat_interleave |
重复张量的元素。 |
roll |
沿着给定的维度滚动张量 |
searchsorted |
找到 |
tensordot |
返回在多个维度上对 a 和 b 的收缩。 |
trace |
返回输入的二维矩阵对角线上元素的和。 |
tril |
返回矩阵(2-D 张量)或矩阵批次的下三角部分 |
tril_indices |
返回一个2-by-N张量中矩阵的下半部分索引,其中第一行包含所有索引的行坐标,第二行包含列坐标。 |
triu |
返回矩阵(2-D 张量)或矩阵批次的上三角部分 |
triu_indices |
返回一个2-by-N张量中矩阵的上三角部分的索引,其中第一行包含所有索引的行坐标,第二行包含列坐标。 |
unflatten |
扩展输入张量的一个维度到多个维度。 |
vander |
生成一个范德蒙矩阵。 |
view_as_real |
返回 |
view_as_complex |
返回一个复数张数的视图,视图的内容是 |
resolve_conj |
如果 |
resolve_neg |
如果 |
BLAS 和 LAPACK 操作¶
addbmm |
对存储在 |
addmm |
对矩阵 |
addmv |
执行矩阵 |
addr |
执行向量 |
baddbmm |
对 |
bmm |
执行存储在 |
chain_matmul |
返回 个二维张量的矩阵乘积。 |
cholesky |
计算对称正定矩阵 的 Cholesky 分解,或对一批对称正定矩阵进行 Cholesky 分解。 |
cholesky_inverse |
计算给定其Cholesky分解的复Hermitian或实对称正定矩阵的逆。 |
cholesky_solve |
计算具有复数厄米特或实对称正定左端系统的线性方程组的解,已知其Cholesky分解。 |
dot |
计算两个一维张量的点积。 |
geqrf |
这是一个用于直接调用LAPACK的geqrf的低级函数。 |
ger |
别名 |
inner |
计算一维张量的点积。 |
逆 |
|
det |
|
logdet |
计算方阵或方阵批次的对数行列式。 |
slogdet |
|
lu |
计算矩阵或矩阵批次的LU分解。 |
lu_solve |
返回线性系统 的LU求解,使用从 |
lu_unpack |
将 |
matmul |
两个张量的矩阵乘积。 |
matrix_power |
|
matrix_exp |
|
mm |
对矩阵 |
mv |
执行矩阵 |
orgqr |
|
ormqr |
计算Householder矩阵的乘积与一般矩阵的矩阵-矩阵乘法。 |
outer |
外积 |
pinverse |
|
qr |
计算矩阵或一批矩阵的QR分解 |
svd |
计算矩阵或矩阵批次的奇异值分解。 |
svd_lowrank |
返回矩阵、矩阵批次或稀疏矩阵 的奇异值分解 |
pca_lowrank |
对低秩矩阵、此类矩阵的批次或稀疏矩阵执行线性主成分分析(PCA)。 |
lobpcg |
使用无矩阵的LOBPCG方法找到对称正定广义特征值问题的k个最大(或最小)特征值及其对应的特征向量。 |
trapz |
|
梯形积分 |
计算沿 |
cumulative_trapezoid |
沿 |
triangular_solve |
求解具有方形上三角或下三角可逆矩阵 和多个右端项 的方程组。 |
vdot |
计算两个一维向量沿某一维度的点积。 |
Foreach 操作¶
警告
此API处于测试阶段,可能会在未来进行更改。 不支持前向模式自动微分。
实用工具¶
compiled_with_cxx11_abi |
返回 PyTorch 是否在 _GLIBCXX_USE_CXX11_ABI=1 的情况下构建 |
result_type |
返回对提供的输入张量执行算术运算后得到的结果的 |
can_cast |
根据在类型提升文档中描述的 PyTorch 转换规则,确定是否允许类型转换。 |
promote_types |
返回具有最小大小和标量类型的 |
use_deterministic_algorithms |
设置PyTorch操作是否必须使用“确定性”算法。 |
are_deterministic_algorithms_enabled |
如果全局确定性标志已打开,则返回 True。 |
is_deterministic_algorithms_warn_only_enabled |
如果全局确定性标志设置为仅警告,则返回 True。 |
设置确定性调试模式 |
设置确定性操作的调试模式。 |
get_deterministic_debug_mode |
返回确定性操作的调试模式的当前值。 |
set_float32_matmul_precision |
设置float32矩阵乘法的内部精度。 |
get_float32_matmul_precision |
返回当前的 float32 矩阵乘法精度值。 |
set_warn_always |
当此标志为False(默认)时,某些PyTorch警告可能每个进程只出现一次。 |
is_warn_always_enabled |
如果全局 warn_always 标志已打开,则返回 True。 |
vmap |
vmap 是向量化映射; |
_assert |
一个围绕Python的assert的包装器,它在符号上是可追踪的。 |
符号数字¶
- class torch.SymBool(node)[源代码]¶
类似于一个布尔值(包括魔术方法),但将对包装节点的所有操作重定向。这在符号形状工作流中用于符号化地记录操作。
与常规的布尔值不同,常规的布尔运算符会强制额外的保护,而不是符号化地进行评估。请改用按位运算符来处理这种情况。
sym_float |
用于浮点数转换的SymInt感知工具。 |
sym_int |
用于整数转换的SymInt感知工具。 |
sym_max |
SymInt-aware 的最大值实用工具。 |
sym_min |
SymInt 感知的 max() 实用工具。 |
sym_not |
用于逻辑否定的 SymInt 感知工具。 |
sym_ite |