評價此頁

torch#

建立日期:2016 年 12 月 23 日 | 最後更新日期:2025 年 7 月 22 日

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 上的 denormal 浮點數。

建立操作#

注意

隨機取樣建立操作列在 隨機取樣 下,包括: 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

使用指定的 indices 處的值構造一個 COO(座標)格式的 稀疏張量

sparse_csr_tensor

使用指定的 crow_indicescol_indices 處的值構造一個 CSR(壓縮稀疏行)格式的 稀疏張量

sparse_csc_tensor

使用指定的 ccol_indicesrow_indices 處的值構造一個 CSC(壓縮稀疏列)格式的 稀疏張量

sparse_bsr_tensor

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

sparse_bsc_tensor

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

asarray

obj 轉換為張量。

as_tensor

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

as_strided

使用指定的 sizestridestorage_offset 建立現有 torch.Tensor input 的檢視。

from_file

建立一個以記憶體對映檔案為後備的 CPU 張量。

from_numpy

numpy.ndarray 建立一個 Tensor

from_dlpack

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

frombuffer

從實現了 Python 緩衝區協議的物件建立一維 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 的一維張量,其值在 [start, end) 區間內,步長為 step,從 start 開始。

range

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

linspace

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

logspace

建立一個大小為 steps 的一維張量,其值在 basestart{{\text{{base}}}}^{{\text{{start}}}}baseend{{\text{{base}}}}^{{\text{{end}}}} 之間均勻分佈,包含端點,並且以 base 為底對數標度。

eye

返回一個二維張量,對角線上為 1,其餘為 0。

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)在 dim 維度上對 input 張量進行索引。

masked_select

返回一個新的 1D 張量,該張量根據布林掩碼 mask(一個 BoolTensor)對 input 張量進行索引。

movedim

inputsource 位置的維度移動到 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_() 的非原地版本。

diagonal_scatter

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

select_scatter

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

slice_scatter

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

scatter_add

torch.Tensor.scatter_add_() 的非原地版本。

scatter_reduce

torch.Tensor.scatter_reduce_() 的非原地版本。

segment_reduce

沿指定軸對輸入張量執行分段歸約操作。

split

將張量分割成塊。

squeeze

返回一個張量,其中 input 中尺寸為 1 的指定維度已被移除。

stack

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

swapaxes

torch.transpose() 的別名。

swapdims

torch.transpose() 的別名。

t

期望input為小於等於2維的張量,並轉置維度0和1。

take

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

take_along_dim

在給定 dim 維度上,從 input 中選擇 indices 中的一維索引處的值。

tensor_split

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

tile

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

轉置

返回 input 張量的轉置檢視。

unbind

移除張量維度。

unravel_index

將平坦索引張量轉換為座標張量元組,這些元組可以索引到任意指定形狀的張量。

unsqueeze

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

vsplit

根據 indices_or_sections,將二維或更高維的張量 input 垂直分割成多個張量。

vstack

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

其中

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

加速器#

在 PyTorch 倉庫中,我們將“加速器”定義為與 CPU 一起用於加速計算的 torch.device。這些裝置使用非同步執行方案,透過 torch.Streamtorch.Event 作為同步的主要方式。我們還假設每個主機上一次只能有一個此類加速器。這使我們可以將當前加速器用作相關概念(例如,固定記憶體、流裝置型別、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

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

事件

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

生成器#

生成器

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

隨機取樣#

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 大小相同的張量,其中每個元素都從具有對應元素作為率引數的泊松分佈中抽取,即:

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 序列的引擎。

序列化#

儲存

將物件儲存到磁碟檔案。

載入

從檔案載入使用 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

如果當前啟用了 grad 模式,則返回 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

other(縮放 alpha)加到 input

addcdiv

執行 tensor1 除以 tensor2 的逐元素除法,將結果乘以標量 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

計算給定輸入張量的按位非。

bitwise_and

計算 inputother 的按位 AND。

bitwise_or

計算 inputother 的按位 OR。

bitwise_xor

計算 inputother 的按位 XOR。

bitwise_left_shift

計算 input 左移 other 位。

bitwise_right_shift

計算 input 右移 other 位。

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 中的資料透過 scalezero_pointquant_minquant_max 進行逐通道偽量化,量化軸為 axis

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 分解為尾數和指數張量,使得 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

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

lgamma

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

log

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

log10

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

log1p

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

log2

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

logaddexp

輸入指數和的對數。

logaddexp2

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

logical_and

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

logical_not

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

logical_or

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

logical_xor

計算給定輸入張量的逐元素邏輯 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

在給定維度 dim 下,返回 input 張量每個切片的最大值。

amin

在給定維度 dim 下,返回 input 張量每個切片的最小值。

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

計算給定維度 diminput 張量中非零值的數量。

hash_tensor

返回 input 張量中所有元素的雜湊值。

比較運算子#

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

返回每個輸入張量的一維檢視,其中零維度。

atleast_2d

返回每個輸入張量的二維檢視,其中零維度。

atleast_3d

返回每個輸入張量的三維檢視,其中零維度。

bincount

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

block_diag

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

broadcast_tensors

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

broadcast_to

input 廣播到 shape 的形狀。

broadcast_shapes

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

bucketize

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

cartesian_prod

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

cdist

計算兩個行向量集合之間每對向量的 p-範數距離(批處理)。

clone

返回 input 的副本。

combinations

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

corrcoef

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

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 的克羅內克積,表示為 \otimes

rot90

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

gcd

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

histc

計算張量的直方圖。

histogram

計算張量中值的直方圖。

histogramdd

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

meshgrid

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

lcm

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

logcumsumexp

返回 input 在維度 dim 上指數化元素的累積和的對數。

ravel

返回一個連續的展平張量。

renorm

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

repeat_interleave

重複張量的元素。

roll

沿給定維度(們)滾動 input 張量。

searchsorted

sorted_sequence 的最內層維度查詢索引,如果將 values 中對應的元素插入到索引之前,當排序時,sorted_sequence 中對應最內層維度的順序將得以保留。

tensordot

返回 ab 在多個維度上的收縮。

trace

返回輸入 2D 矩陣對角線元素的和。

tril

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

tril_indices

返回 row 行 x col 列矩陣的下三角部分的索引,在一個 2xN 張量中,第一行包含所有索引的行座標,第二行包含列座標。

triu

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

triu_indices

返回 row x col 矩陣的 upper triangular 部分的索引,在一個 2xN 張量中,第一行包含所有索引的行座標,第二行包含列座標。

unflatten

將輸入張量的某個維度擴充套件到多個維度。

vander

生成 Vandermonde 矩陣。

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 個 2D 張量的矩陣乘積。

cholesky

計算對稱正定矩陣 AA 或對稱正定矩陣批次的喬里斯基分解。

cholesky_inverse

在已知其喬里斯基分解的情況下,計算複數厄米或實數對稱正定矩陣的逆。

cholesky_solve

在已知其喬里斯基分解的情況下,計算具有複數厄米或實數對稱正定左側的線性方程組的解。

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() 返回的具有部分主元的 LU 分解,求解線性系統 Ax=bAx = b 的解。

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

計算豪斯霍爾德矩陣乘積與一般矩陣的矩陣-矩陣乘積。

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() 應用於輸入列表中的每個張量。

_foreach_abs_

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

_foreach_acos

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

_foreach_acos_

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

_foreach_asin

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

_foreach_asin_

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

_foreach_atan

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

_foreach_atan_

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

_foreach_ceil

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

_foreach_ceil_

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

_foreach_cos

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

_foreach_cos_

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

_foreach_cosh

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

_foreach_cosh_

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

_foreach_erf

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

_foreach_erf_

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

_foreach_erfc

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

_foreach_erfc_

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

_foreach_exp

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

_foreach_exp_

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

_foreach_expm1

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

_foreach_expm1_

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

_foreach_floor

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

_foreach_floor_

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

_foreach_log

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

_foreach_log_

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

_foreach_log10

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

_foreach_log10_

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

_foreach_log1p

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

_foreach_log1p_

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

_foreach_log2

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

_foreach_log2_

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

_foreach_neg

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

_foreach_neg_

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

_foreach_tan

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

_foreach_tan_

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

_foreach_sin

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

_foreach_sin_

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

_foreach_sinh

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

_foreach_sinh_

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

_foreach_round

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

_foreach_round_

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

_foreach_sqrt

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

_foreach_sqrt_

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

_foreach_lgamma

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

_foreach_lgamma_

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

_foreach_frac

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

_foreach_frac_

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

_foreach_reciprocal

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

_foreach_reciprocal_

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

_foreach_sigmoid

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

_foreach_sigmoid_

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

_foreach_trunc

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

_foreach_trunc_

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

_foreach_zero_

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

工具#

compiled_with_cxx11_abi

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

result_type

返回在對提供的輸入張量執行算術運算時將產生的結果 torch.dtype

can_cast

根據 PyTorch 型別提升 文件 中描述的型別提升規則,確定是否允許型別轉換。

promote_types

返回大小和標量型別最小的 torch.dtype,它不小於或低於 type1type2

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 的一個包裝器,它是符號可跟蹤的。

符號數#

class torch.SymInt(node)[source]#

像 int(包括魔法方法)一樣,但將所有操作重定向到包裝節點。這尤其用於在符號形狀工作流中符號記錄操作。

as_integer_ratio()[source]#

將此整數表示為精確的整數比

返回型別

tuple[‘SymInt’, int]

class torch.SymFloat(node)[source]#

像 float(包括魔法方法)一樣,但將所有操作重定向到包裝節點。這尤其用於在符號形狀工作流中符號記錄操作。

as_integer_ratio()[source]#

將此浮點數表示為精確的整數比

返回型別

tuple[int, int]

conjugate()[source]#

返回浮點數的複共軛。

返回型別

SymFloat

hex()[source]#

返回浮點數的十六進位制表示。

返回型別

str

is_integer()[source]#

如果浮點數為整數,則返回 True。

class torch.SymBool(node)[source]#

像 bool(包括魔法方法)一樣,但將所有操作重定向到包裝節點。這尤其用於在符號形狀工作流中符號記錄操作。

與常規 bool 不同,常規布林運算子將強制執行額外守衛,而不是符號求值。請改用按位運算子進行處理。

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

SymInt 感知的 the ternary operator(t if b else f)的實用函式。

sym_sum

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

匯出路徑#

警告

此功能是原型,未來可能包含不相容的更改。

export generated/exportdb/index

控制流#

警告

此功能是原型,未來可能包含不相容的更改。

cond

有條件地應用 true_fnfalse_fn

最佳化#

compile

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

torch.compile 文件

運算元標籤#

class torch.Tag#

成員

core

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#