torch¶
torch 套件包含用於多維張量的資料結構,並定義了對這些張量的數學運算。 此外,它還提供了許多用於有效序列化張量和任意類型的實用程式,以及其他有用的實用程式。
它具有 CUDA 對應項,使您能夠在運算能力 >= 3.0 的 NVIDIA GPU 上執行張量運算。
張量 (Tensors)¶
如果 obj 是 PyTorch 張量,則返回 True。 |
|
如果 obj 是 PyTorch 儲存物件,則返回 True。 |
|
如果 |
|
如果 |
|
如果 |
|
如果 |
|
將預設浮點 dtype 設定為 |
|
取得目前的預設浮點 |
|
設定預設的 |
|
取得預設的 |
|
返回 |
|
設定列印選項。 |
|
在 CPU 上停用非正規化的浮點數。 |
建立運算 (Creation Ops)¶
注意
隨機取樣建立運算列在 隨機取樣 (Random sampling) 下,包括:torch.rand()
torch.rand_like()
torch.randn()
torch.randn_like()
torch.randint()
torch.randint_like()
torch.randperm()
。您也可以將 torch.empty()
與 原地隨機取樣 (In-place random sampling) 方法一起使用,以建立從更廣泛分布取樣的 torch.Tensor
。
藉由複製 |
|
使用給定的 |
|
使用給定的 |
|
使用給定的 |
|
使用給定的 |
|
使用給定的 |
|
將 |
|
將 |
|
使用指定的 |
|
建立一個 CPU 張量,其儲存由記憶體對應檔案支援。 |
|
從 |
|
將來自外部函式庫的 tensor 轉換為 |
|
從實作 Python buffer protocol 的物件建立一個一維的 |
|
返回一個填滿純量值 0 的 tensor,其形狀由變數引數 |
|
返回一個填滿純量值 0 的 tensor,其大小與 |
|
返回一個填滿純量值 1 的 tensor,其形狀由變數引數 |
|
返回一個填滿純量值 1 的 tensor,其大小與 |
|
返回大小為 的 1-D tensor,其值來自區間 |
|
返回大小為 的 1-D tensor,其值從 |
|
建立一個大小為 |
|
建立一個大小為 |
|
返回一個 2-D tensor,其對角線上為 1,其他地方為 0。 |
|
返回一個填滿未初始化資料的 tensor。 |
|
返回一個與 |
|
建立一個具有指定 |
|
建立一個大小為 |
|
返回一個與 |
|
將浮點張量轉換為具有給定縮放比例和零點的量化張量。 |
|
將浮點張量轉換為具有給定縮放比例和零點(每個通道)的量化張量。 |
|
通過反量化量化的張量,返回一個 fp32 張量。 |
|
計算 |
索引、切片、連接、變更操作¶
返回張量的共軛視圖,並將最後兩個維度轉置。 |
|
返回一個包含 |
|
在給定的維度中連接 |
|
是 |
|
是 |
|
返回 |
|
嘗試將張量分割成指定數量的塊。 |
|
根據 |
|
通過水平堆疊 |
|
按深度(沿第三個軸)依序堆疊張量。 |
|
沿著由 dim 指定的軸收集值。 |
|
根據 |
|
依序水平(按列)堆疊張量。 |
|
有關函數描述,請參閱 |
|
有關函數描述,請參閱 |
|
有關函數描述,請參閱 |
|
返回一個新張量,該張量使用 LongTensor 的 |
|
返回一個新的 1 維張量,該張量根據布林遮罩 |
|
將 |
|
是 |
|
返回一個新張量,該張量是 |
|
與 |
|
返回原始張量 |
|
返回一個與 |
|
是 |
|
沿著給定索引處的所選維度對 |
|
非原地版本的 |
|
將 |
|
將 |
|
將 |
|
|
|
|
|
將張量分割成多個區塊。 |
|
返回一個張量,其中移除了 |
|
沿著一個新的維度串聯一系列的張量。 |
|
是 |
|
是 |
|
期望 |
|
返回一個新的張量,其中包含給定索引處的 |
|
沿著給定的 |
|
將一個張量沿著 |
|
通過重複 |
|
返回一個張量,該張量是 |
|
移除一個張量維度。 |
|
將扁平索引的張量轉換為坐標張量的元組,這些坐標張量索引到指定形狀的任意張量中。 |
|
返回一個新的張量,該張量在指定位置插入一個大小為一的維度。 |
|
根據 |
|
依序垂直 (以列為主) 堆疊張量。 |
|
根據 |
加速器¶
在 PyTorch 儲存庫中,我們將「加速器」定義為與 CPU 一起使用以加速計算的 torch.device
。這些設備使用非同步執行方案,使用 torch.Stream
和 torch.Event
作為其執行同步的主要方式。我們還假設在給定主機上一次只能有一個這樣的加速器可用。這允許我們將當前加速器用作相關概念(例如釘選記憶體、Stream device_type、FSDP 等)的預設設備。
截至今日,加速器設備依序為 “CUDA”、“MTIA”、“XPU” 和 PrivateUse1 (許多設備不在 PyTorch 儲存庫本身中)。
以先進先出 (FIFO) 順序非同步執行各自任務的有序佇列。 |
|
查詢並記錄 Stream 狀態,以識別或控制跨 Stream 的相依性並測量計時。 |
隨機抽樣¶
將所有設備上產生亂數的種子設定為非決定性亂數。 |
|
設定所有設備上產生亂數的種子。 |
|
傳回作為 Python long 的產生亂數的初始種子。 |
|
以 torch.ByteTensor 形式傳回亂數產生器狀態。 |
|
設定亂數產生器狀態。 |
- torch.default_generator 傳回 預設 CPU torch.Generator¶
從 Bernoulli 分佈中抽取二進位亂數(0 或 1)。 |
|
傳回一個張量,其中每一列包含從多項式 (更嚴格的定義是多元,請參閱 |
|
傳回一個從獨立常態分佈中抽取的亂數張量,這些分佈的平均值和標準差是給定的。 |
|
傳回一個與 |
|
返回一個張量,其元素為從區間 上均勻分布的隨機數。 |
|
返回一個與 |
|
返回一個張量,其元素為介於 |
|
返回一個形狀與 Tensor |
|
返回一個張量,其元素為來自平均數為 0 且變異數為 1 的常態分布 (也稱為標準常態分布) 的隨機數。 |
|
返回一個與 |
|
返回從 |
原地 (In-place) 隨機抽樣¶
還有一些定義在張量上的原地隨機抽樣函數。點擊連結以參考它們的文件
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 上運算內 (intraop) 平行化的執行緒數量。 |
|
返回用於 CPU 上運算間 (inter-op) 平行化的執行緒數量 (例如 |
|
設定用於運算間平行化的執行緒數量 (例如 |
局部停用梯度計算¶
上下文管理器 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
禁用梯度計算的上下文管理器。 |
|
啟用梯度計算的上下文管理器。 |
|
開啟或關閉梯度計算的上下文管理器。 |
|
如果目前已啟用 grad 模式,則傳回 True。 |
|
啟用或停用推論模式的上下文管理器。 |
|
如果目前已啟用推論模式,則傳回 True。 |
數學運算¶
常數¶
|
一個浮點正無限大。 是 |
|
一個浮點「非數字」值。 此值不是合法的數字。 是 |
逐元素運算¶
計算 |
|
是 |
|
計算 |
|
|
|
返回一個新的 tensor,其中包含 |
|
|
|
將 |
|
執行 |
|
執行 |
|
計算給定 |
|
返回一個新的 tensor,其中包含 |
|
|
|
返回一個新的 tensor,其中包含 |
|
|
|
返回一個新的 tensor,其中包含 |
|
|
|
返回一個新的 tensor,其中包含 |
|
|
|
考慮象限,求元素級別的 的反正切值。 |
|
|
|
計算給定輸入 tensor 的位元反相。 |
|
計算 |
|
計算 |
|
計算 |
|
計算 |
|
計算 |
|
返回一個新的 tensor,其中包含 |
|
|
|
計算給定 |
|
創建一個新的浮點 tensor,其中包含 |
|
返回一個新的 tensor,其中包含 |
|
返回一個新的 tensor,其中包含 |
|
返回一個新的 tensor,其中包含從角度(以度為單位)轉換為弧度的 |
|
將輸入 |
|
|
|
|
|
是 |
|
是 |
|
返回一個新的 tensor,其中包含輸入 tensor |
|
是 |
|
是 |
|
返回一個新的 tensor,其中包含使用 |
|
返回一個新的 tensor,其中包含使用 |
|
是 |
|
以雙精度方式,逐元素地將 |
|
返回一個新的 tensor,其中包含 |
|
逐個元素地應用 C++ 的 std::fmod。 |
|
計算 |
|
將 |
|
使用 二階精確中心差分法,以及邊界上的一階或二階估計,估計函數 在一維或多維中的梯度。 |
|
返回一個新的 tensor,其中包含 |
|
將 |
|
根據純量或 tensor |
|
計算 |
|
返回一個新的 tensor,其中包含 |
|
返回一個新的 tensor,其中包含 |
|
返回一個新的 tensor,其中包含 (1 + |
|
返回一個新的 tensor,其中包含 |
|
輸入指數的總和的對數。 |
|
以 2 為底的輸入指數總和的對數。 |
|
計算給定輸入 tensors 的元素級邏輯 AND。 |
|
計算給定輸入 tensor 的元素級邏輯 NOT。 |
|
計算給定輸入 tensors 的元素級邏輯 OR。 |
|
計算給定輸入 tensors 的元素級邏輯 XOR。 |
|
是 |
|
給定直角三角形的兩條直角邊,返回其斜邊。 |
|
是 |
|
是 |
|
是 |
|
將 |
|
是 |
|
是 |
|
將 |
|
返回一個新張量,其中包含 |
|
是 |
|
返回 |
|
是 |
|
返回 |
|
將 |
|
對 4D (NCHW) 量化張量應用批次正規化。 |
|
對由多個輸入平面組成的輸入量化張量應用 1D 最大池化。 |
|
對由多個輸入平面組成的輸入量化張量應用 2D 最大池化。 |
|
返回一個新張量,其中 |
|
返回一個包含 |
|
返回一個新張量,其中包含 |
|
逐元素計算 Python 的模數運算。 |
|
將 |
|
返回一個新張量,其中包含 |
|
是 |
|
返回一個新張量,其中包含 |
|
此函數是 torch.sign() 對複數張量的擴展。 |
|
測試 |
|
返回一個新張量,其中包含 |
|
是 |
|
返回一個新張量,其中包含 |
|
返回一個新張量,其中包含 |
|
返回一個新張量,其中包含 |
|
從 |
|
是 |
|
返回一個新張量,其中包含 |
|
返回一個新張量,其中包含 |
|
是 |
|
返回一個新張量,其中包含 |
|
是 |
Reduction Ops¶
返回 |
|
返回展平張量或沿維度的最小值(們)的索引 |
|
返回給定維度 |
|
返回給定維度 |
|
計算 |
|
測試 |
|
測試 |
|
返回 |
|
返回 |
|
傳回 ( |
|
傳回 |
|
計算指定維度上所有非 NaN 元素的平均值。 |
|
傳回 |
|
傳回 |
|
傳回一個具名元組 |
|
傳回給定張量的矩陣範數或向量範數。 |
|
傳回所有元素的總和,並將非數字 (NaN) 視為零。 |
|
傳回 |
|
計算 |
|
這是 |
|
計算由 |
|
計算由 |
|
傳回 |
|
傳回輸入張量的唯一元素。 |
|
從每個等價元素的連續群組中,消除除第一個元素之外的所有元素。 |
|
計算由 |
|
計算由 |
|
計算張量 |
比較運算子¶
此函數檢查 |
|
傳回沿給定維度按值升序對張量排序的索引。 |
|
計算逐元素相等性 |
|
如果兩個張量具有相同的大小和元素,則為 |
|
計算逐元素的 。 |
|
是 |
|
計算逐元素的 。 |
|
是 |
|
傳回一個新的張量,其中包含布林元素,表示 |
|
傳回一個新的張量,其中包含布林元素,表示每個元素是否為 有限 值。 |
|
測試 |
|
測試 |
|
測試 |
|
測試 |
|
傳回一個新的張量,其中包含布林元素,表示 |
|
傳回一個新的張量,其中包含布林元素,表示 |
|
傳回一個具名元組 |
|
逐元素計算 。 |
|
是 |
|
逐元素計算 。 |
|
是 |
|
計算 |
|
計算 |
|
計算 |
|
計算 |
|
逐元素計算 。 |
|
是 |
|
沿著給定的維度,依值以遞增順序對 |
|
沿著給定的維度,返回給定 |
|
沿著其第一個維度,依值以遞增順序對 |
頻譜運算¶
短時傅立葉變換 (STFT)。 |
|
反短時傅立葉變換。 |
|
Bartlett 視窗函數。 |
|
Blackman 視窗函數。 |
|
Hamming 視窗函數。 |
|
Hann 視窗函數。 |
|
計算 Kaiser 視窗,其視窗長度為 |
其他運算¶
返回每個零維輸入張量的 1 維視圖。 |
|
返回每個零維輸入張量的 2 維視圖。 |
|
返回每個零維輸入張量的 3 維視圖。 |
|
計算非負整數陣列中每個值的頻率。 |
|
從提供的張量建立分塊對角矩陣。 |
|
根據廣播語義廣播給定的張量。 |
|
將 |
|
與 |
|
返回每個 |
|
執行給定張量序列的笛卡爾積。 |
|
計算批次的 p 範數距離,其距離為兩組行向量的每一對。 |
|
返回 |
|
計算給定張量的長度為 的組合。 |
|
估計由 |
|
估計由 |
|
返回 |
|
返回一個名為 |
|
返回一個名為 |
|
返回 |
|
返回 |
|
|
|
創建一個張量,其某些 2D 平面(由 |
|
|
|
返回 |
|
計算沿給定維度的 n 階前向差分。 |
|
沿著使用基於愛因斯坦求和約定的符號指定的維度,對輸入 |
|
通過將 |
|
沿著 dims 中給定的軸反轉 n 維張量的順序。 |
|
在左右方向翻轉張量,返回一個新張量。 |
|
在上下方向翻轉張量,返回一個新張量。 |
|
計算 |
|
在由 dims 軸指定的平面中將 n 維張量旋轉 90 度。 |
|
計算 |
|
計算張量的直方圖。 |
|
計算張量中值的直方圖。 |
|
計算張量中值的多維直方圖。 |
|
創建由 attr:tensors 中的 1D 輸入指定的座標網格。 |
|
計算 |
|
返回 |
|
返回一個連續的扁平化張量。 |
|
返回一個張量,其中 |
|
重複張量的元素。 |
|
沿著給定的維度滾動張量 |
|
從 |
|
返回 a 和 b 在多個維度上的收縮。 |
|
返回輸入 2 維矩陣的對角線元素的總和。 |
|
返回矩陣(2 維張量)或矩陣批次 |
|
返回 |
|
返回矩陣(2 維張量)或矩陣批次 |
|
返回 |
|
在多個維度上展開輸入張量的維度。 |
|
生成一個 Vandermonde 矩陣。 |
|
返回 |
|
返回 |
|
如果 |
|
如果 |
BLAS 和 LAPACK 運算¶
執行儲存在 |
|
執行矩陣 |
|
執行矩陣 |
|
執行向量 |
|
執行 |
|
執行儲存在 |
|
返回 個 2-D 張量的矩陣乘積。 |
|
計算對稱正定矩陣 的 Cholesky 分解,或者對批次的對稱正定矩陣進行計算。 |
|
計算給定其 Cholesky 分解的複 Hermitian 或實對稱正定矩陣的逆矩陣。 |
|
計算具有複 Hermitian 或實對稱正定左側,且給定其 Cholesky 分解的線性方程組的解。 |
|
計算兩個 1D 張量的點積。 |
|
這是一個底層函數,用於直接調用 LAPACK 的 geqrf。 |
|
|
|
計算 1D 張量的點積。 |
|
計算方陣或批次方陣的對數行列式。 |
|
計算矩陣或批次矩陣 |
|
使用來自 |
|
將 |
|
兩個張量的矩陣乘積。 |
|
執行矩陣 |
|
執行矩陣 |
|
計算 Householder 矩陣的乘積與一般矩陣的矩陣乘法。 |
|
|
|
計算矩陣或一批矩陣 |
|
計算矩陣或批次矩陣 |
|
回傳矩陣、批次矩陣或稀疏矩陣 的奇異值分解 |
|
對低秩矩陣、此類矩陣的批次或稀疏矩陣執行線性主成分分析 (PCA)。 |
|
使用無矩陣 LOBPCG 方法,找到對稱正定廣義特徵值問題的 k 個最大(或最小)特徵值以及對應的特徵向量。 |
|
|
|
沿著 |
|
沿著 |
|
求解具有方形上三角或下三角可逆矩陣 和多個右手邊 的方程式系統。 |
|
沿著一個維度計算兩個 1D 向量的點積。 |
Foreach 運算¶
警告
此 API 處於 Beta 階段,可能會在未來進行變更。不支援前向模式 AD。
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
工具程式¶
傳回 PyTorch 是否使用 _GLIBCXX_USE_CXX11_ABI=1 建置 |
|
傳回對提供的輸入張量執行算術運算後產生的 |
|
判斷在型別提升 文件中描述的 PyTorch 轉換規則下是否允許型別轉換。 |
|
傳回具有最小大小和純量種類的 |
|
設定 PyTorch 運算是否必須使用「確定性」演算法。 |
|
如果全域確定性旗標已開啟,則傳回 True。 |
|
如果全域確定性旗標設定為僅警告,則傳回 True。 |
|
設定確定性運算的偵錯模式。 |
|
傳回確定性運算的偵錯模式的目前值。 |
|
設定 float32 矩陣乘法的內部精確度。 |
|
傳回 float32 矩陣乘法精確度的目前值。 |
|
當此旗標為 False (預設值) 時,某些 PyTorch 警告可能只會在每個程序中顯示一次。 |
|
傳回與給定裝置相關聯的模組 (例如,torch.device('cuda')、"mtia:0"、"xpu" 等)。 |
|
如果已開啟全域 warn_always 旗標,則傳回 True。 |
|
vmap 是向量化的對應; |
|
Python assert 的包裝函式,可進行符號追蹤。 |
符號數字¶
- class torch.SymInt(node)[source][source]¶
類似於 int (包括 magic methods),但會將對包裝節點的所有運算重新導向。 這特別用於符號記錄符號形狀工作流程中的運算。
- class torch.SymFloat(node)[source][source]¶
類似於 float (包括 magic methods),但會將對包裝節點的所有運算重新導向。 這特別用於符號記錄符號形狀工作流程中的運算。
- class torch.SymBool(node)[原始碼][原始碼]¶
如同布林值 (包含魔術方法),但將所有操作重新導向至封裝的節點。 這特別用於以符號方式記錄符號形狀工作流程中的操作。
與常規布林值不同,常規布林運算子會強制執行額外的保護,而不是以符號方式評估。 請改用位元運算子來處理此問題。
用於浮點數轉換的 SymInt 感知工具。 |
|
用於整數轉換的 SymInt 感知工具。 |
|
用於 max 的 SymInt 感知工具,避免在 a < b 時進行分支。 |
|
用於 min() 的 SymInt 感知工具。 |
|
用於邏輯否定的 SymInt 感知工具。 |
|
N 元加法,對於長列表,其計算速度比迭代二元加法更快。 |