快捷方式

torch

torch 包包含多維張量的資料結構,並定義了針對這些張量的數學運算。此外,它還提供了許多用於高效序列化張量和任意型別的實用工具,以及其他有用的工具。

它有一個對應的 CUDA 部分,使你能夠在計算能力 >= 3.0 的 NVIDIA GPU 上執行張量計算。

張量

is_tensor

如果 obj 是 PyTorch 張量,則返回 True。

is_storage

如果 obj 是 PyTorch 儲存物件,則返回 True。

is_complex

如果 input 的資料型別是複數資料型別,即 torch.complex64torch.complex128 之一,則返回 True。

is_conj

如果 input 是共軛張量,即其共軛位設定為 True,則返回 True。

is_floating_point

如果 input 的資料型別是浮點資料型別,即 torch.float64torch.float32torch.float16torch.bfloat16 之一,則返回 True。

is_nonzero

如果 input 是一個單元素張量,並且在型別轉換後不等於零,則返回 True。

set_default_dtype

將預設浮點 dtype 設定為 d

get_default_dtype

獲取當前預設浮點 torch.dtype

set_default_device

將預設的 torch.Tensor 分配到 device 上。

get_default_device

獲取預設的 torch.Tensor 分配到 device 上。

set_default_tensor_type

numel

返回 input 張量中的元素總數。

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

tensor

透過複製 data 構造一個沒有自動求導歷史記錄的張量(也稱為“葉子張量”,參見自動求導機制)。

sparse_coo_tensor

構造一個 COO(座標)格式的稀疏張量,並在給定 indices 處指定值。

sparse_csr_tensor

構造一個 CSR(壓縮稀疏行)格式的稀疏張量,並在給定 crow_indicescol_indices 處指定值。

sparse_csc_tensor

構造一個 CSC(壓縮稀疏列)格式的稀疏張量,並在給定 ccol_indicesrow_indices 處指定值。

sparse_bsr_tensor

構造一個 BSR(塊壓縮稀疏行)格式的稀疏張量,並在給定 crow_indicescol_indices 處指定 2 維塊。

sparse_bsc_tensor

構造一個 BSC(塊壓縮稀疏列)格式的稀疏張量,並在給定 ccol_indicesrow_indices 處指定 2 維塊。

asarray

obj 轉換為張量。

as_tensor

data 轉換為張量,如果可能,共享資料並保留自動求導歷史記錄。

as_strided

建立現有 torch.Tensor input 的檢視,並指定 sizestridestorage_offset

from_file

建立一個 CPU 張量,其儲存由記憶體對映檔案支援。

from_numpy

numpy.ndarray 建立一個 Tensor

from_dlpack

將來自外部庫的張量轉換為 torch.Tensor

frombuffer

從實現 Python 緩衝區協議的物件建立一個 1 維 Tensor

zeros

返回一個填充了標量值 0 的張量,其形狀由可變引數 size 定義。

zeros_like

返回一個填充了標量值 0 的張量,其大小與 input 相同。

ones

返回一個填充了標量值 1 的張量,其形狀由可變引數 size 定義。

ones_like

返回一個填充了標量值 1 的張量,其大小與 input 相同。

arange

返回一個大小為 endstartstep\left\lceil \frac{\text{end} - \text{start}}{\text{step}} \right\rceil 的 1 維張量,其值取自區間 [start, end),以 start 為起點,以 step 為公差。

range

返回一個大小為 endstartstep+1\left\lfloor \frac{\text{end} - \text{start}}{\text{step}} \right\rfloor + 1 的 1 維張量,其值從 startend,步長為 step

linspace

建立一個大小為 steps 的一維張量,其值在 startend(包含)之間均勻分佈。

logspace

建立一個大小為 steps 的一維張量,其值在對數尺度下從 basestart{{\text{{base}}}}^{{\text{{start}}}}baseend{{\text{{base}}}}^{{\text{{end}}}}(包含)之間均勻分佈,對數底數為 base

eye

返回一個對角線為一、其他位置為零的二維張量。

empty

返回一個填充了未初始化資料的張量。

empty_like

返回一個大小與 input 相同的未初始化張量。

empty_strided

建立一個具有指定 sizestride 並填充了未定義資料的張量。

full

建立一個大小為 size 並填充了 fill_value 的張量。

full_like

返回一個大小與 input 相同並填充了 fill_value 的張量。

quantize_per_tensor

將浮點張量轉換為具有給定比例和零點的量化張量。

quantize_per_channel

將浮點張量轉換為具有給定比例和零點的每通道量化張量。

dequantize

透過對量化張量進行反量化,返回一個 fp32 張量。

complex

構造一個複數張量,其實部等於 real,虛部等於 imag

polar

構造一個複數張量,其元素是笛卡爾座標,對應於極座標,其中絕對值為 abs,角度為 angle

heaviside

計算 input 中每個元素的 Heaviside 階躍函式。

索引、切片、連線、變異操作

adjoint

返回一個共軛且最後兩個維度轉置的張量檢視。

argwhere

返回一個包含 input 中所有非零元素索引的張量。

cat

在給定維度上連線 tensors 中的張量序列。

concat

torch.cat() 的別名。

concatenate

torch.cat() 的別名。

conj

返回 input 的檢視,其共軛位已翻轉。

chunk

嘗試將張量分割成指定數量的塊。

dsplit

根據 indices_or_sections,將具有三個或更多維度的張量 input 沿深度方向分割成多個張量。

column_stack

透過水平堆疊 tensors 中的張量建立一個新張量。

dstack

按順序沿深度方向(沿第三軸)堆疊張量。

gather

沿 dim 指定的軸收集值。

hsplit

根據 indices_or_sections,將具有一個或多個維度的張量 input 水平分割成多個張量。

hstack

按順序水平(按列)堆疊張量。

index_add

請參閱 index_add_() 獲取函式描述。

index_copy

請參閱 index_add_() 獲取函式描述。

index_reduce

請參閱 index_reduce_() 獲取函式描述。

index_select

返回一個新張量,它使用 index 中的條目(LongTensor 型別)沿維度 diminput 張量進行索引。

masked_select

返回一個新的一維張量,它根據布林掩碼 maskBoolTensor 型別)對 input 張量進行索引。

movedim

input 中位於 source 位置的維度移動到 destination 位置。

moveaxis

torch.movedim() 的別名。

narrow

返回一個新張量,它是 input 張量的窄化版本。

narrow_copy

Tensor.narrow() 相同,但返回的是副本而非共享儲存。

nonzero

permute

返回原始張量 input 的檢視,其維度已置換。

reshape

返回一個與 input 具有相同資料和元素數量,但具有指定形狀的張量。

row_stack

torch.vstack() 的別名。

select

沿指定維度在給定索引處對 input 張量進行切片。

scatter

torch.Tensor.scatter_() 的非原地 (out-of-place) 版本

diagonal_scatter

src 張量的值沿 input 的對角線元素嵌入到 input 中,對應於 dim1dim2

select_scatter

src 張量的值在給定索引處嵌入到 input 中。

slice_scatter

src 張量的值在給定維度處嵌入到 input 中。

scatter_add

torch.Tensor.scatter_add_() 的非原地 (out-of-place) 版本

scatter_reduce

torch.Tensor.scatter_reduce_() 的非原地 (out-of-place) 版本

split

將張量分割成塊。

squeeze

返回一個張量,其中 input 中所有指定大小為 1 的維度都被移除。

stack

沿一個新維度連線一系列張量。

swapaxes

torch.transpose() 的別名。

swapdims

torch.transpose() 的別名。

t

要求 input 是一個 <= 2 維張量,並轉置維度 0 和 1。

take

返回一個新張量,其中包含 input 在給定索引處的元素。

take_along_dim

沿給定 diminput 中根據 indices 中的一維索引選擇值。

tensor_split

將張量 input 沿維度 dim 根據由 indices_or_sections 指定的索引或段數分割成多個子張量,所有子張量都是 input 的檢視。

tile

透過重複 input 的元素構造一個張量。

transpose

返回 input 的轉置版本張量。

unbind

移除一個張量維度。

unravel_index

將一個平面索引張量轉換為一個座標張量元組,該元組可以用於索引指定形狀的任意張量。

unsqueeze

返回一個新張量,並在指定位置插入一個大小為 1 的維度。

vsplit

根據 indices_or_sectionsinput(一個具有兩個或更多維度的張量)垂直分割成多個張量。

vstack

按順序垂直(按行)堆疊張量。

where

根據 condition 返回一個從 inputother 中選擇元素的張量。

加速器

在 PyTorch 倉庫中,我們將“加速器”定義為一種與 CPU 一起使用以加速計算的 torch.device。這些裝置使用非同步執行方案,主要透過 torch.Streamtorch.Event 來執行同步。我們還假設在給定主機上一次只能有一個這樣的加速器可用。這使得我們可以將當前加速器用作相關概念(如固定記憶體 (pinned memory)、Stream device_type、FSDP 等)的預設裝置。

截至目前,加速器裝置(不分先後順序)包括 “CUDA”“MTIA”“XPU”“MPS”、“HPU”和 PrivateUse1(許多裝置不在 PyTorch 倉庫本身)。

PyTorch 生態系統中的許多工具使用 fork 來建立子程序(例如資料載入或操作內並行化),因此儘可能延遲任何會阻止進一步 fork 的操作非常重要。這在這裡尤為重要,因為大多數加速器的初始化都會產生這種影響。實際上,您應該記住,預設情況下檢查 torch.accelerator.current_accelerator() 是一個編譯時檢查,因此始終是 fork 安全的。相反,向此函式傳遞 check_available=True 標誌或呼叫 torch.accelerator.is_available() 通常會阻止後續的 fork 操作。

某些後端提供了一個實驗性的選擇加入選項,以使執行時可用性檢查成為 fork 安全的。例如,在使用 CUDA 裝置時,可以使用 PYTORCH_NVML_BASED_CUDA_CHECK=1

Stream

一個按順序執行相應任務的非同步佇列,按照先進先出 (FIFO) 的順序執行。

Event

查詢和記錄 Stream 狀態,以識別或控制跨 Stream 的依賴關係並測量時間。

生成器

Generator

建立並返回一個生成器物件,該物件管理生成偽隨機數的演算法的狀態。

隨機取樣

seed

在所有裝置上將用於生成隨機數的種子設定為非確定性隨機數。

manual_seed

在所有裝置上設定用於生成隨機數的種子。

initial_seed

將用於生成隨機數的初始種子作為 Python long 返回。

get_rng_state

將隨機數生成器狀態作為 torch.ByteTensor 返回。

set_rng_state

設定隨機數生成器狀態。

torch.default_generator 返回預設的 CPU torch.Generator

bernoulli

從伯努利分佈中抽取二元隨機數(0 或 1)。

multinomial

返回一個張量,其中每一行包含從位於 input 張量對應行中的多項分佈(更嚴格的定義是多元,詳見 torch.distributions.multinomial.Multinomial)中抽取的 num_samples 個索引。

normal

返回一個張量,其中包含從給定均值和標準差的獨立正態分佈中抽取的隨機數。

poisson

返回一個與 input 大小相同的張量,其中每個元素都從泊松分佈中取樣得到,其速率引數由 input 中的對應元素給出,即

rand

返回一個張量,其中填充了來自區間 [0,1)[0, 1) 上的均勻分佈的隨機數。

rand_like

返回一個與 input 大小相同的張量,其中填充了來自區間 [0,1)[0, 1) 上的均勻分佈的隨機數。

randint

返回一個張量,其中填充了在 low(包含)和 high(不包含)之間均勻生成的隨機整數。

randint_like

返回一個與張量 input 形狀相同的張量,其中填充了在 low(包含)和 high(不包含)之間均勻生成的隨機整數。

randn

返回一個張量,其中填充了來自均值為 0、方差為 1 的正態分佈(也稱為標準正態分佈)的隨機數。

randn_like

返回一個與 input 大小相同的張量,其中填充了來自均值為 0、方差為 1 的正態分佈的隨機數。

randperm

返回從 0n - 1 的整數的隨機排列。

原地隨機取樣

張量上還定義了一些其他的原地隨機取樣函式。點選連結檢視其文件

準隨機取樣

quasirandom.SobolEngine

torch.quasirandom.SobolEngine 是一個用於生成(加擾)Sobol 序列的引擎。

序列化

save

將物件儲存到磁碟檔案。

load

從檔案中載入使用 torch.save() 儲存的物件。

並行

get_num_threads

返回用於並行化 CPU 操作的執行緒數。

set_num_threads

設定 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)  # 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

no_grad

停用梯度計算的上下文管理器。

enable_grad

啟用梯度計算的上下文管理器。

autograd.grad_mode.set_grad_enabled

設定梯度計算開啟或關閉的上下文管理器。

is_grad_enabled

如果當前啟用了梯度模式,則返回 True。

autograd.grad_mode.inference_mode

啟用或停用推理模式的上下文管理器。

is_inference_mode_enabled

如果當前啟用了推理模式,則返回 True。

數學運算

常量

inf

浮點正無窮大。是 math.inf 的別名。

nan

浮點“非數字”值。此值不是合法數字。是 math.nan 的別名。

逐點運算

abs

計算 input 中每個元素的絕對值。

absolute

torch.abs() 的別名

acos

計算 input 中每個元素的反餘弦。

arccos

torch.acos() 的別名。

acosh

返回一個新張量,其中包含 input 中元素的反雙曲餘弦。

arccosh

torch.acosh() 的別名。

add

otheralpha 縮放後新增到 input 中。

addcdiv

tensor1tensor2 執行逐元素除法,將結果乘以標量 value 並將其新增到 input 中。

addcmul

tensor1tensor2 執行逐元素乘法,將結果乘以標量 value 並將其新增到 input 中。

angle

計算給定 input 張量的逐元素角度(以弧度為單位)。

asin

返回一個新張量,其中包含 input 中元素的反正弦。

arcsin

torch.asin() 的別名。

asinh

返回一個新張量,其中包含 input 中元素的反雙曲正弦。

arcsinh

torch.asinh() 的別名。

atan

返回一個新張量,其中包含 input 中元素的反正切。

arctan

torch.atan() 的別名。

atanh

返回一個新張量,其中包含 input 中元素的反雙曲正切。

arctanh

torch.atanh() 的別名。

atan2

逐元素計算 inputi/otheri\text{input}_{i} / \text{other}_{i} 的反正切,同時考慮象限。

arctan2

torch.atan2() 的別名。

bitwise_not

計算給定 input 張量的按位非。

bitwise_and

計算 inputother 的按位與。

bitwise_or

計算 inputother 的按位或。

bitwise_xor

計算 inputother 的按位異或。

bitwise_left_shift

計算 inputother 位進行的算術左移。

bitwise_right_shift

計算 inputother 位進行的算術右移。

ceil

返回一個新張量,其中包含 input 中元素的向上取整值,即大於或等於每個元素的最小整數。

clamp

input 中所有元素限制在 [ min, max ] 範圍內。

clip

torch.clamp() 的別名。

conj_physical

計算給定 input 張量的逐元素共軛。

copysign

建立一個新的浮點張量,其逐元素幅值來自 input,符號來自 other

cos

返回一個新張量,其中包含 input 中元素的餘弦。

cosh

返回一個新張量,其中包含 input 中元素的雙曲餘弦。

deg2rad

返回一個新張量,其中 input 的每個元素都從角度(度)轉換為弧度。

div

將輸入 input 的每個元素除以 other 的相應元素。

divide

torch.div() 的別名。

digamma

torch.special.digamma() 的別名。

erf

torch.special.erf() 的別名。

erfc

torch.special.erfc() 的別名。

erfinv

torch.special.erfinv() 的別名。

exp

返回一個新張量,其中包含輸入張量 input 中元素的指數。

exp2

torch.special.exp2() 的別名。

expm1

torch.special.expm1() 的別名。

fake_quantize_per_channel_affine

返回一個新張量,其中 input 中的資料根據 axis 指定的通道,使用 scalezero_pointquant_minquant_max 進行每通道偽量化。

fake_quantize_per_tensor_affine

返回一個新張量,其中 input 中的資料使用 scalezero_pointquant_minquant_max 進行每張量偽量化。

fix

torch.trunc() 的別名。

float_power

逐元素計算 inputexponent 次方,結果為雙精度。

floor

返回一個新張量,其中包含 input 中元素的向下取整值,即小於或等於每個元素的最大整數。

floor_divide

fmod

逐項應用 C++ 的 std::fmod

frac

計算 input 中每個元素的小數部分。

frexp

input 分解為尾數 (mantissa) 和指數 (exponent) 張量,使得 input=mantissa×2exponent\text{input} = \text{mantissa} \times 2^{\text{exponent}}

gradient

使用二階精確中心差分法以及邊界處的一階或二階估計值,估算一個或多個維度上函式 g:RnRg : \mathbb{R}^n \rightarrow \mathbb{R} 的梯度。

imag

返回一個包含 self 張量虛部值的新張量。

ldexp

input 乘以 2 的 other 次冪。

lerp

基於標量或張量 weight,對兩個張量 start (由 input 給出) 和 end 進行線性插值,並返回結果張量 out

lgamma

計算 input 上伽馬函式絕對值的自然對數。

log

返回一個新張量,其中包含 input 中元素的自然對數。

log10

返回一個新張量,其中包含 input 中元素的以 10 為底的對數。

log1p

返回一個新張量,其中包含 (1 + input) 的自然對數。

log2

返回一個新張量,其中包含 input 中元素的以 2 為底的對數。

logaddexp

輸入的指數和的對數。

logaddexp2

輸入的以 2 為底的指數和的對數。

logical_and

計算給定輸入張量的逐元素邏輯與。

logical_not

計算給定輸入張量的逐元素邏輯非。

logical_or

計算給定輸入張量的逐元素邏輯或。

logical_xor

計算給定輸入張量的逐元素邏輯異或。

logit

torch.special.logit() 的別名。

hypot

給定直角三角形的兩條直角邊,返回其斜邊。

i0

torch.special.i0() 的別名。

igamma

torch.special.gammainc() 的別名。

igammac

torch.special.gammaincc() 的別名。

mul

input 乘以 other

multiply

torch.mul() 的別名。

mvlgamma

torch.special.multigammaln() 的別名。

nan_to_num

input 中的 NaN、正無窮和負無窮值替換為 nanposinfneginf 指定的值。

neg

返回一個新張量,其中包含 input 中元素的負值。

negative

torch.neg() 的別名。

nextafter

逐元素返回 input 之後朝向 other 的下一個浮點值。

polygamma

torch.special.polygamma() 的別名。

positive

返回 input

pow

計算 input 中每個元素的 exponent 次冪,並返回包含結果的張量。

quantized_batch_norm

對 4D (NCHW) 量化張量應用批歸一化。

quantized_max_pool1d

對由多個輸入平面組成的輸入量化張量應用 1D 最大池化。

quantized_max_pool2d

對由多個輸入平面組成的輸入量化張量應用 2D 最大池化。

rad2deg

返回一個新張量,其中 input 中的每個元素都從弧度轉換為角度。

real

返回一個包含 self 張量實部值的新張量。

reciprocal

返回一個新張量,其中包含 input 中元素的倒數。

remainder

按元素計算 Python 的模運算

round

input 的元素四捨五入到最近的整數。

rsqrt

返回一個新張量,其中包含 input 中每個元素的平方根的倒數。

sigmoid

torch.special.expit() 的別名。

sign

返回一個新張量,其中包含 input 中元素的符號。

sgn

此函式是將 torch.sign() 擴充套件到複數張量。

signbit

測試 input 的每個元素的符號位是否設定。

sin

返回一個新張量,其中包含 input 中元素的正弦。

sinc

torch.special.sinc() 的別名。

sinh

返回一個新張量,其中包含 input 中元素的雙曲正弦。

softmax

torch.nn.functional.softmax() 的別名。

sqrt

返回一個新張量,其中包含 input 中元素的平方根。

square

返回一個新張量,其中包含 input 中元素的平方。

sub

input 中減去 other(按 alpha 縮放)。

subtract

torch.sub() 的別名。

tan

返回一個新張量,其中包含 input 中元素的正切。

tanh

返回一個新張量,其中包含 input 中元素的雙曲正切。

true_divide

torch.div() 的別名,設定 rounding_mode=None

trunc

返回一個新張量,其中包含 input 中元素的截斷整數值。

xlogy

torch.special.xlogy() 的別名。

規約操作

argmax

返回 input 張量中所有元素的最大值的索引。

argmin

返回展平張量或沿維度方向的最小值(或多個值)的索引。

amax

返回給定維度 diminput 張量每個切片的最大值。

amin

返回給定維度 diminput 張量每個切片的最小值。

aminmax

計算 input 張量的最小值和最大值。

all

測試 input 中的所有元素是否都評估為 True

any

測試 input 中的任何元素是否評估為 True

max

返回 input 張量中所有元素的最大值。

min

返回 input 張量中所有元素的最小值。

dist

返回 (input - other) 的 p-範數。

logsumexp

返回給定維度 diminput 張量每行元素指數和的對數。

mean

nanmean

計算指定維度上所有 非 NaN 元素的均值。

median

返回 input 中值的中位數。

nanmedian

返回 input 中值的中位數,忽略 NaN 值。

mode

返回一個命名元組 (values, indices),其中 values 是給定維度 diminput 張量每行的眾數,即在該行中出現頻率最高的值;indices 是每個找到的眾數值的索引位置。

norm

返回給定張量的矩陣範數或向量範數。

nansum

返回所有元素的總和,將非數字 (NaN) 視為零。

prod

返回 input 張量中所有元素的乘積。

quantile

計算 input 張量沿維度 dim 的每行的第 q 個分位數。

nanquantile

這是 torch.quantile() 的一個變體,它“忽略” NaN 值,計算分位數 q,就像 input 中不存在 NaN 值一樣。

std

計算由 dim 指定維度的標準差。

std_mean

計算由 dim 指定維度的標準差和均值。

sum

返回 input 張量中所有元素的總和。

unique

返回輸入張量的唯一元素。

unique_consecutive

對於每個連續的等價元素組,僅保留第一個元素。

var

計算由 dim 指定維度的方差。

var_mean

計算由 dim 指定維度的方差和均值。

count_nonzero

計算張量 input 沿給定維度 dim 的非零值數量。

比較操作

allclose

此函式檢查 inputother 是否滿足條件

argsort

返回沿給定維度按值升序排序張量的索引。

eq

計算逐元素相等性

equal

如果兩個張量大小和元素都相同,則為 True,否則為 False

ge

逐元素計算 inputother\text{input} \geq \text{other}

greater_equal

torch.ge() 的別名。

gt

逐元素計算 input>other\text{input} > \text{other}

greater

torch.gt() 的別名。

isclose

返回一個新布林張量,指示 input 的每個元素是否“接近”於 other 的相應元素。

isfinite

返回一個新布林張量,指示每個元素是否 有限

isin

測試 elements 的每個元素是否在 test_elements 中。

isinf

測試 input 的每個元素是否為無窮(正無窮或負無窮)。

isposinf

測試 input 的每個元素是否為正無窮。

isneginf

測試 input 的每個元素是否為負無窮。

isnan

返回一個新布林張量,指示 input 的每個元素是否為 NaN。

isreal

返回一個新布林張量,指示 input 的每個元素是否為實數值。

kthvalue

返回一個命名元組 (values, indices),其中 values 是給定維度 diminput 張量每行的第 k 個最小值。

le

逐元素計算 inputother\text{input} \leq \text{other}

less_equal

torch.le() 的別名。

lt

逐元素計算 input<other\text{input} < \text{other}

less

torch.lt() 的別名。

maximum

計算 inputother 的逐元素最大值。

minimum

計算 inputother 的逐元素最小值。

fmax

計算 inputother 的逐元素最大值。

fmin

計算 inputother 的逐元素最小值。

ne

逐元素計算 inputother\text{input} \neq \text{other}

not_equal

torch.ne() 的別名。

sort

沿給定維度按值升序對 input 張量的元素進行排序。

topk

返回給定維度上給定 input 張量的 k 個最大元素。

msort

沿 input 張量第一維度按值升序對其元素進行排序。

譜操作

stft

短時傅立葉變換 (STFT)。

istft

逆短時傅立葉變換。

bartlett_window

Bartlett 窗函式。

blackman_window

Blackman 窗函式。

hamming_window

Hamming 窗函式。

hann_window

Hann 窗函式。

kaiser_window

計算具有窗長度 window_length 和形狀引數 beta 的 Kaiser 窗。

其他操作

atleast_1d

返回每個零維輸入張量的 1 維檢視。

atleast_2d

返回每個零維輸入張量的 2 維檢視。

atleast_3d

返回每個零維輸入張量的 3 維檢視。

bincount

計算非負整數陣列中每個值的頻率。

block_diag

從提供的張量建立塊對角矩陣。

broadcast_tensors

根據 廣播語義 廣播給定的張量。

broadcast_to

input 廣播到形狀 shape

broadcast_shapes

類似於 broadcast_tensors(),但用於形狀。

bucketize

返回 input 中每個值所屬桶的索引,桶的邊界由 boundaries 設定。

cartesian_prod

對給定張量序列進行笛卡爾積。

cdist

計算兩組行向量中每對向量之間的 p-範數距離(批次)。

clone

返回 input 的副本。

combinations

計算給定張量的長度為 rr 的組合。

corrcoef

估計由 input 矩陣給出的變數的 Pearson 積矩相關係數矩陣,其中行表示變數,列表示觀測值。

cov

估計由 input 矩陣給出的變數的協方差矩陣,其中行表示變數,列表示觀測值。

cross

返回 inputother 在維度 dim 上的向量叉積。

cummax

返回一個命名元組 (values, indices),其中 valuesinput 在維度 dim 上的累積最大值。

cummin

返回一個命名元組 (values, indices),其中 valuesinput 在維度 dim 上的累積最小值。

cumprod

返回 input 在維度 dim 上的累積乘積。

cumsum

返回 input 在維度 dim 上的累積和。

diag

  • 如果 input 是一個向量(1D 張量),則返回一個 2D 方陣

diag_embed

建立一個張量,其特定 2D 平面(由 dim1dim2 指定)的對角線由 input 填充。

diagflat

  • 如果 input 是一個向量(1D 張量),則返回一個 2D 方陣

diagonal

返回 input 的部分檢視,其中相對於 dim1dim2 的對角線元素作為維度附加到形狀末尾。

diff

計算沿給定維度的 n 階前向差分。

einsum

根據愛因斯坦求和約定指定的維度,對輸入 operands 中元素的乘積進行求和。

flatten

input 重塑為一維張量進行展平。

flip

沿 dims 中的給定軸反轉 n 維張量的順序。

fliplr

左右翻轉張量,返回一個新張量。

flipud

上下翻轉張量,返回一個新張量。

kron

計算 inputother 的 Kronecker 積,記為 \otimes

rot90

在 dims 軸指定的平面中將 n 維張量旋轉 90 度。

gcd

計算 inputother 的逐元素最大公約數 (GCD)。

histc

計算張量的直方圖。

histogram

計算張量中值的直方圖。

histogramdd

計算張量中值的多維直方圖。

meshgrid

建立由 attr:tensors 中的 1D 輸入指定的座標網格。

lcm

計算 inputother 的逐元素最小公倍數 (LCM)。

logcumsumexp

返回 input 張量在維度 dim 上元素指數化的累計求和的對數。

ravel

返回一個連續的扁平化張量。

renorm

返回一個張量,其中 input 沿維度 dim 的每個子張量都經過歸一化,使得子張量的 p-範數小於 maxnorm

repeat_interleave

重複張量的元素。

roll

沿著給定維度滾動張量 input

searchsorted

sorted_sequence最內層維度中查詢索引,以便如果將 values 中的對應值插入到這些索引之前,排序後 sorted_sequence 中對應的最內層維度的順序將得以保留。

tensordot

返回張量 a 和 b 在多個維度上的收縮(contraction)。

trace

返回輸入二維矩陣對角線元素的和。

tril

返回矩陣(二維張量)或矩陣批次 input 的下三角部分,結果張量 out 的其他元素設定為 0。

tril_indices

返回一個 rowcol 列矩陣的下三角部分的索引,表示為一個 2xN 的張量,其中第一行包含所有索引的行座標,第二行包含列座標。

triu

返回矩陣(二維張量)或矩陣批次 input 的上三角部分,結果張量 out 的其他元素設定為 0。

triu_indices

返回一個 rowcol 列矩陣的上三角部分的索引,表示為一個 2xN 的張量,其中第一行包含所有索引的行座標,第二行包含列座標。

unflatten

將輸入張量的一個維度擴充套件為多個維度。

vander

生成一個範德蒙德矩陣。

view_as_real

返回 input 的實數張量檢視。

view_as_complex

返回 input 的複數張量檢視。

resolve_conj

如果 input 的共軛位設定為 True,則返回應用了共軛操作的新張量,否則返回 input

resolve_neg

如果 input 的負數位設定為 True,則返回應用了取反操作的新張量,否則返回 input

BLAS 和 LAPACK 操作

addbmm

對儲存在 batch1batch2 中的矩陣執行批次矩陣乘法,並帶有一個歸約加法步驟(所有矩陣乘法結果沿第一維度累加)。

addmm

對矩陣 mat1mat2 執行矩陣乘法。

addmv

對矩陣 mat 和向量 vec 執行矩陣-向量乘積。

addr

對向量 vec1vec2 執行外積,並將其加到矩陣 input 上。

baddbmm

batch1batch2 中的矩陣執行批次矩陣乘法。

bmm

對儲存在 inputmat2 中的矩陣執行批次矩陣乘法。

chain_matmul

返回 NN 個二維張量的矩陣乘積。

cholesky

計算對稱正定矩陣 AA 或批次對稱正定矩陣的 Cholesky 分解。

cholesky_inverse

給定複數 Hermitian 矩陣或實數對稱正定矩陣的 Cholesky 分解,計算其逆。

cholesky_solve

給定複數 Hermitian 或實數對稱正定左側 (lhs) 矩陣的 Cholesky 分解,計算線性方程組的解。

dot

計算兩個一維張量的點積。

geqrf

這是一個直接呼叫 LAPACK 的 geqrf 的底層函式。

ger

torch.outer() 的別名。

inner

計算一維張量的點積。

inverse

torch.linalg.inv() 的別名

det

torch.linalg.det() 的別名

logdet

計算方陣或批次方陣的對數行列式。

slogdet

torch.linalg.slogdet() 的別名

lu

計算矩陣 A 或矩陣批次的 LU 分解。

lu_solve

使用 lu_factor() 得到的 A 的部分主元 LU 分解,返回線性系統 Ax=bAx = b 的 LU 求解結果。

lu_unpack

lu_factor() 返回的 LU 分解解包為 P, L, U 矩陣。

matmul

兩個張量的矩陣乘積。

matrix_power

torch.linalg.matrix_power() 的別名

matrix_exp

torch.linalg.matrix_exp() 的別名。

mm

對矩陣 inputmat2 執行矩陣乘法。

mv

對矩陣 input 和向量 vec 執行矩陣-向量乘積。

orgqr

torch.linalg.householder_product() 的別名。

ormqr

計算 Householder 矩陣乘積與通用矩陣的矩陣乘法。

outer

inputvec2 的外積。

pinverse

torch.linalg.pinv() 的別名

qr

計算矩陣或矩陣批次 input 的 QR 分解,並返回一個包含張量 (Q, R) 的具名元組,使得 input=QR\text{input} = Q R 成立,其中 QQ 是正交矩陣或正交矩陣的批次,RR 是上三角矩陣或上三角矩陣的批次。

svd

計算矩陣或矩陣批次 input 的奇異值分解。

svd_lowrank

返回矩陣、矩陣批次或稀疏矩陣 AA 的奇異值分解 (U, S, V),使得 AUdiag(S)VHA \approx U \operatorname{diag}(S) V^{\text{H}} 成立。

pca_lowrank

對低秩矩陣、此類矩陣的批次或稀疏矩陣執行線性主成分分析 (PCA)。

lobpcg

使用無矩陣 LOBPCG 方法查詢對稱正定廣義特徵值問題的 k 個最大(或最小)特徵值及對應的特徵向量。

trapz

torch.trapezoid() 的別名。

trapezoid

沿維度 dim 計算梯形法則

cumulative_trapezoid

沿維度 dim 累積計算梯形法則

triangular_solve

求解具有方形上三角或下三角可逆矩陣 AA 和多個右側矩陣(向量) bb 的方程組。

vdot

沿維度計算兩個一維向量的點積。

Foreach 操作

警告

此 API 處於 Beta 階段,未來可能發生不相容的更改。不支援前向模式自動微分 (AD)。

_foreach_abs

torch.abs() 應用於輸入列表中的每個 Tensor。

_foreach_abs_

torch.abs() 應用於輸入列表中的每個 Tensor。

_foreach_acos

torch.acos() 應用於輸入列表中的每個 Tensor。

_foreach_acos_

torch.acos() 應用於輸入列表中的每個 Tensor。

_foreach_asin

torch.asin() 應用於輸入列表中的每個 Tensor。

_foreach_asin_

torch.asin() 應用於輸入列表中的每個 Tensor。

_foreach_atan

torch.atan() 應用於輸入列表中的每個 Tensor。

_foreach_atan_

torch.atan() 應用於輸入列表中的每個 Tensor。

_foreach_ceil

torch.ceil() 應用於輸入列表中的每個 Tensor。

_foreach_ceil_

torch.ceil() 應用於輸入列表中的每個 Tensor。

_foreach_cos

torch.cos() 應用於輸入列表中的每個 Tensor。

_foreach_cos_

torch.cos() 應用於輸入列表中的每個 Tensor。

_foreach_cosh

torch.cosh() 應用於輸入列表中的每個 Tensor。

_foreach_cosh_

torch.cosh() 應用於輸入列表中的每個 Tensor。

_foreach_erf

torch.erf() 應用於輸入列表中的每個 Tensor。

_foreach_erf_

torch.erf() 應用於輸入列表中的每個 Tensor。

_foreach_erfc

torch.erfc() 應用於輸入列表中的每個 Tensor。

_foreach_erfc_

torch.erfc() 應用於輸入列表中的每個 Tensor。

_foreach_exp

torch.exp() 應用於輸入列表中的每個 Tensor。

_foreach_exp_

torch.exp() 應用於輸入列表中的每個 Tensor。

_foreach_expm1

torch.expm1() 應用於輸入列表中的每個 Tensor。

_foreach_expm1_

torch.expm1() 應用於輸入列表中的每個 Tensor。

_foreach_floor

torch.floor() 應用於輸入列表中的每個 Tensor。

_foreach_floor_

torch.floor() 應用於輸入列表中的每個 Tensor。

_foreach_log

torch.log() 應用於輸入列表中的每個 Tensor。

_foreach_log_

torch.log() 應用於輸入列表中的每個 Tensor。

_foreach_log10

torch.log10() 應用於輸入列表中的每個 Tensor。

_foreach_log10_

torch.log10() 應用於輸入列表中的每個 Tensor。

_foreach_log1p

torch.log1p() 應用於輸入列表中的每個 Tensor。

_foreach_log1p_

torch.log1p() 應用於輸入列表中的每個 Tensor。

_foreach_log2

torch.log2() 應用於輸入列表中的每個 Tensor。

_foreach_log2_

torch.log2() 應用於輸入列表中的每個 Tensor。

_foreach_neg

torch.neg() 應用於輸入列表中的每個 Tensor。

_foreach_neg_

torch.neg() 應用於輸入列表中的每個 Tensor。

_foreach_tan

torch.tan() 應用於輸入列表中的每個 Tensor。

_foreach_tan_

torch.tan() 應用於輸入列表中的每個 Tensor。

_foreach_sin

torch.sin() 應用於輸入列表中的每個 Tensor。

_foreach_sin_

torch.sin() 應用於輸入列表中的每個 Tensor。

_foreach_sinh

torch.sinh() 應用於輸入列表中的每個 Tensor。

_foreach_sinh_

torch.sinh() 應用於輸入列表中的每個 Tensor。

_foreach_round

torch.round() 應用於輸入列表中的每個 Tensor。

_foreach_round_

torch.round() 應用於輸入列表中的每個 Tensor。

_foreach_sqrt

torch.sqrt() 應用於輸入列表中的每個 Tensor。

_foreach_sqrt_

torch.sqrt() 應用於輸入列表中的每個 Tensor。

_foreach_lgamma

torch.lgamma() 應用於輸入列表中的每個 Tensor。

_foreach_lgamma_

torch.lgamma() 應用於輸入列表中的每個 Tensor。

_foreach_frac

torch.frac() 應用於輸入列表中的每個 Tensor。

_foreach_frac_

torch.frac() 應用於輸入列表中的每個 Tensor。

_foreach_reciprocal

torch.reciprocal() 應用於輸入列表中的每個 Tensor。

_foreach_reciprocal_

torch.reciprocal() 應用於輸入列表中的每個 Tensor。

_foreach_sigmoid

torch.sigmoid() 應用於輸入列表中的每個 Tensor。

_foreach_sigmoid_

torch.sigmoid() 應用於輸入列表中的每個 Tensor。

_foreach_trunc

torch.trunc() 應用於輸入列表中的每個 Tensor。

_foreach_trunc_

torch.trunc() 應用於輸入列表中的每個 Tensor。

_foreach_zero_

torch.zero() 應用於輸入列表中的每個 Tensor。

工具函式

compiled_with_cxx11_abi

返回 PyTorch 是否是使用 _GLIBCXX_USE_CXX11_ABI=1 構建的。

result_type

返回對提供的輸入張量執行算術運算後會產生的 torch.dtype

can_cast

根據型別提升文件中描述的 PyTorch 型別轉換規則,判斷是否允許進行型別轉換。

promote_types

返回具有最小大小和標量種類(scalar kind),且不小於也不低於 type1type2torch.dtype

use_deterministic_algorithms

設定 PyTorch 操作是否必須使用“確定性”演算法。

are_deterministic_algorithms_enabled

如果全域性確定性標誌開啟,則返回 True

is_deterministic_algorithms_warn_only_enabled

如果全域性確定性標誌設定為僅警告模式,則返回 True

set_deterministic_debug_mode

設定確定性操作的除錯模式。

get_deterministic_debug_mode

返回確定性操作當前除錯模式的值。

set_float32_matmul_precision

設定 float32 矩陣乘法的內部精度。

get_float32_matmul_precision

返回 float32 矩陣乘法當前精度值。

set_warn_always

當此標誌為 False(預設值)時,某些 PyTorch 警告可能每個程序僅顯示一次。

get_device_module

返回與給定裝置(例如,torch.device('cuda'), "mtia:0", "xpu", ...)關聯的模組。

is_warn_always_enabled

如果全域性 warn_always 標誌開啟,則返回 True

vmap

vmap 是向量化對映;vmap(func) 返回一個新函式,該函式將 func 應用於輸入張量的某個維度。

_assert

Python assert 的一個包裝器,可以進行符號跟蹤。

符號數值

torch.SymInt(node)[source][source]

類似於 int (包括魔術方法),但將所有操作重定向到包裝的節點。這特別用於在符號形狀工作流中符號記錄操作。

as_integer_ratio()[source][source]

將此 int 表示為一個精確的整數比。

返回型別

tuple['SymInt', int]

torch.SymFloat(node)[source][source]

類似於 float (包括魔術方法),但將所有操作重定向到包裝的節點。這特別用於在符號形狀工作流中符號記錄操作。

as_integer_ratio()[source][source]

將此 float 表示為一個精確的整數比。

返回型別

tuple[int, int]

conjugate()[source][source]

返回此 float 的複共軛。

返回型別

SymFloat

hex()[source][source]

返回此 float 的十六進位制表示。

返回型別

str

is_integer()[source][source]

如果此 float 是整數,則返回 True

torch.SymBool(node)[source][source]

類似於 bool (包括魔術方法),但將所有操作重定向到包裝的節點。這特別用於在符號形狀工作流中符號記錄操作。

與普通 bool 不同,普通布林運算子會強制增加 guards,而不是符號求值。請改用按位運算子來處理此問題。

sym_float

SymInt 感知的 float 型別轉換工具函式。

sym_fresh_size

sym_int

SymInt 感知的 int 型別轉換工具函式。

sym_max

SymInt 感知的 max 工具函式,避免在 a < b 上分支。

sym_min

SymInt 感知的 min() 工具函式。

sym_not

SymInt 感知的邏輯非工具函式。

sym_ite

sym_sum

N 元加法,對於長列表比迭代二元加法計算更快。

匯出路徑

警告

此特性是原型,未來可能存在不相容的變更。

export generated/exportdb/index

控制流

警告

此特性是原型,未來可能存在不相容的變更。

cond

有條件地應用 true_fnfalse_fn

最佳化

compile

使用 TorchDynamo 和指定的後端最佳化給定的模型/函式。

torch.compile 文件

運算子標籤

torch.Tag

成員

core

data_dependent_output

dynamic_output_shape

flexible_layout

generated

inplace_view

maybe_aliasing_or_mutating

needs_fixed_stride_order

nondeterministic_bitwise

nondeterministic_seeded

pointwise

pt2_compliant_tag

view_copy

屬性 name

文件

訪問全面的 PyTorch 開發者文件

檢視文件

教程

獲取針對初學者和高階開發者的深入教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源