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。
透過複製 |
|
構造一個 COO(座標)格式的稀疏張量,並在給定 |
|
構造一個 CSR(壓縮稀疏行)格式的稀疏張量,並在給定 |
|
構造一個 CSC(壓縮稀疏列)格式的稀疏張量,並在給定 |
|
構造一個 BSR(塊壓縮稀疏行)格式的稀疏張量,並在給定 |
|
構造一個 BSC(塊壓縮稀疏列)格式的稀疏張量,並在給定 |
|
將 |
|
將 |
|
建立現有 torch.Tensor |
|
建立一個 CPU 張量,其儲存由記憶體對映檔案支援。 |
|
從 |
|
將來自外部庫的張量轉換為 |
|
從實現 Python 緩衝區協議的物件建立一個 1 維 |
|
返回一個填充了標量值 0 的張量,其形狀由可變引數 |
|
返回一個填充了標量值 0 的張量,其大小與 |
|
返回一個填充了標量值 1 的張量,其形狀由可變引數 |
|
返回一個填充了標量值 1 的張量,其大小與 |
|
返回一個大小為 的 1 維張量,其值取自區間 |
|
返回一個大小為 的 1 維張量,其值從 |
|
建立一個大小為 |
|
建立一個大小為 |
|
返回一個對角線為一、其他位置為零的二維張量。 |
|
返回一個填充了未初始化資料的張量。 |
|
返回一個大小與 |
|
建立一個具有指定 |
|
建立一個大小為 |
|
返回一個大小與 |
|
將浮點張量轉換為具有給定比例和零點的量化張量。 |
|
將浮點張量轉換為具有給定比例和零點的每通道量化張量。 |
|
透過對量化張量進行反量化,返回一個 fp32 張量。 |
|
計算 |
索引、切片、連線、變異操作¶
返回一個共軛且最後兩個維度轉置的張量檢視。 |
|
返回一個包含 |
|
在給定維度上連線 |
|
|
|
|
|
返回 |
|
嘗試將張量分割成指定數量的塊。 |
|
根據 |
|
透過水平堆疊 |
|
按順序沿深度方向(沿第三軸)堆疊張量。 |
|
沿 dim 指定的軸收集值。 |
|
根據 |
|
按順序水平(按列)堆疊張量。 |
|
請參閱 |
|
請參閱 |
|
請參閱 |
|
返回一個新張量,它使用 |
|
返回一個新的一維張量,它根據布林掩碼 |
|
將 |
|
|
|
返回一個新張量,它是 |
|
與 |
|
返回原始張量 |
|
返回一個與 |
|
是 |
|
沿指定維度在給定索引處對 |
|
|
|
將 |
|
將 |
|
將 |
|
|
|
|
|
將張量分割成塊。 |
|
返回一個張量,其中 |
|
沿一個新維度連線一系列張量。 |
|
是 |
|
是 |
|
要求 |
|
返回一個新張量,其中包含 |
|
沿給定 |
|
將張量 |
|
透過重複 |
|
返回 |
|
移除一個張量維度。 |
|
將一個平面索引張量轉換為一個座標張量元組,該元組可以用於索引指定形狀的任意張量。 |
|
返回一個新張量,並在指定位置插入一個大小為 1 的維度。 |
|
根據 |
|
按順序垂直(按行)堆疊張量。 |
|
根據 |
加速器¶
在 PyTorch 倉庫中,我們將“加速器”定義為一種與 CPU 一起使用以加速計算的 torch.device。這些裝置使用非同步執行方案,主要透過 torch.Stream 和 torch.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。
一個按順序執行相應任務的非同步佇列,按照先進先出 (FIFO) 的順序執行。 |
|
查詢和記錄 Stream 狀態,以識別或控制跨 Stream 的依賴關係並測量時間。 |
隨機取樣¶
在所有裝置上將用於生成隨機數的種子設定為非確定性隨機數。 |
|
在所有裝置上設定用於生成隨機數的種子。 |
|
將用於生成隨機數的初始種子作為 Python long 返回。 |
|
將隨機數生成器狀態作為 torch.ByteTensor 返回。 |
|
設定隨機數生成器狀態。 |
- torch.default_generator 返回預設的 CPU torch.Generator¶
從伯努利分佈中抽取二元隨機數(0 或 1)。 |
|
返回一個張量,其中每一行包含從位於 |
|
返回一個張量,其中包含從給定均值和標準差的獨立正態分佈中抽取的隨機數。 |
|
返回一個與 |
|
返回一個張量,其中填充了來自區間 上的均勻分佈的隨機數。 |
|
返回一個與 |
|
返回一個張量,其中填充了在 |
|
返回一個與張量 |
|
返回一個張量,其中填充了來自均值為 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。 |
數學運算¶
常量¶
|
浮點正無窮大。是 |
|
浮點“非數字”值。此值不是合法數字。是 |
逐點運算¶
計算 |
|
是 |
|
計算 |
|
是 |
|
返回一個新張量,其中包含 |
|
是 |
|
將 |
|
對 |
|
對 |
|
計算給定 |
|
返回一個新張量,其中包含 |
|
是 |
|
返回一個新張量,其中包含 |
|
是 |
|
返回一個新張量,其中包含 |
|
是 |
|
返回一個新張量,其中包含 |
|
是 |
|
逐元素計算 的反正切,同時考慮象限。 |
|
是 |
|
計算給定 input 張量的按位非。 |
|
計算 |
|
計算 |
|
計算 |
|
計算 |
|
計算 |
|
返回一個新張量,其中包含 |
|
是 |
|
計算給定 |
|
建立一個新的浮點張量,其逐元素幅值來自 |
|
返回一個新張量,其中包含 |
|
返回一個新張量,其中包含 |
|
返回一個新張量,其中 |
|
將輸入 |
|
是 |
|
是 |
|
是 |
|
是 |
|
是 |
|
返回一個新張量,其中包含輸入張量 |
|
是 |
|
是 |
|
返回一個新張量,其中 |
|
返回一個新張量,其中 |
|
是 |
|
逐元素計算 |
|
返回一個新張量,其中包含 |
|
逐項應用 C++ 的 std::fmod。 |
|
計算 |
|
將 |
|
使用二階精確中心差分法以及邊界處的一階或二階估計值,估算一個或多個維度上函式 的梯度。 |
|
返回一個包含 |
|
將 |
|
基於標量或張量 |
|
計算 |
|
返回一個新張量,其中包含 |
|
返回一個新張量,其中包含 |
|
返回一個新張量,其中包含 (1 + |
|
返回一個新張量,其中包含 |
|
輸入的指數和的對數。 |
|
輸入的以 2 為底的指數和的對數。 |
|
計算給定輸入張量的逐元素邏輯與。 |
|
計算給定輸入張量的逐元素邏輯非。 |
|
計算給定輸入張量的逐元素邏輯或。 |
|
計算給定輸入張量的逐元素邏輯異或。 |
|
給定直角三角形的兩條直角邊,返回其斜邊。 |
|
|
|
將 |
|
|
|
將 |
|
返回一個新張量,其中包含 |
|
|
|
逐元素返回 |
|
返回 |
|
計算 |
|
對 4D (NCHW) 量化張量應用批歸一化。 |
|
對由多個輸入平面組成的輸入量化張量應用 1D 最大池化。 |
|
對由多個輸入平面組成的輸入量化張量應用 2D 最大池化。 |
|
返回一個新張量,其中 |
|
返回一個包含 |
|
返回一個新張量,其中包含 |
|
按元素計算 Python 的模運算。 |
|
將 |
|
返回一個新張量,其中包含 |
|
返回一個新張量,其中包含 |
|
此函式是將 torch.sign() 擴充套件到複數張量。 |
|
測試 |
|
返回一個新張量,其中包含 |
|
|
|
返回一個新張量,其中包含 |
|
返回一個新張量,其中包含 |
|
返回一個新張量,其中包含 |
|
從 |
|
|
|
返回一個新張量,其中包含 |
|
返回一個新張量,其中包含 |
|
|
|
返回一個新張量,其中包含 |
|
規約操作¶
返回 |
|
返回展平張量或沿維度方向的最小值(或多個值)的索引。 |
|
返回給定維度 |
|
返回給定維度 |
|
計算 |
|
測試 |
|
測試 |
|
返回 |
|
返回 |
|
返回 ( |
|
返回給定維度 |
|
計算指定維度上所有 非 NaN 元素的均值。 |
|
返回 |
|
返回 |
|
返回一個命名元組 |
|
返回給定張量的矩陣範數或向量範數。 |
|
返回所有元素的總和,將非數字 (NaN) 視為零。 |
|
返回 |
|
計算 |
|
這是 |
|
計算由 |
|
計算由 |
|
返回 |
|
返回輸入張量的唯一元素。 |
|
對於每個連續的等價元素組,僅保留第一個元素。 |
|
計算由 |
|
計算由 |
|
計算張量 |
比較操作¶
此函式檢查 |
|
返回沿給定維度按值升序排序張量的索引。 |
|
計算逐元素相等性 |
|
如果兩個張量大小和元素都相同,則為 |
|
逐元素計算 。 |
|
|
|
逐元素計算 。 |
|
|
|
返回一個新布林張量,指示 |
|
返回一個新布林張量,指示每個元素是否 有限。 |
|
測試 |
|
測試 |
|
測試 |
|
測試 |
|
返回一個新布林張量,指示 |
|
返回一個新布林張量,指示 |
|
返回一個命名元組 |
|
逐元素計算 。 |
|
|
|
逐元素計算 。 |
|
|
|
計算 |
|
計算 |
|
計算 |
|
計算 |
|
逐元素計算 。 |
|
|
|
沿給定維度按值升序對 |
|
返回給定維度上給定 |
|
沿 |
譜操作¶
短時傅立葉變換 (STFT)。 |
|
逆短時傅立葉變換。 |
|
Bartlett 窗函式。 |
|
Blackman 窗函式。 |
|
Hamming 窗函式。 |
|
Hann 窗函式。 |
|
計算具有窗長度 |
其他操作¶
返回每個零維輸入張量的 1 維檢視。 |
|
返回每個零維輸入張量的 2 維檢視。 |
|
返回每個零維輸入張量的 3 維檢視。 |
|
計算非負整數陣列中每個值的頻率。 |
|
從提供的張量建立塊對角矩陣。 |
|
根據 廣播語義 廣播給定的張量。 |
|
將 |
|
類似於 |
|
返回 |
|
對給定張量序列進行笛卡爾積。 |
|
計算兩組行向量中每對向量之間的 p-範數距離(批次)。 |
|
返回 |
|
計算給定張量的長度為 的組合。 |
|
估計由 |
|
估計由 |
|
返回 |
|
返回一個命名元組 |
|
返回一個命名元組 |
|
返回 |
|
返回 |
|
|
|
建立一個張量,其特定 2D 平面(由 |
|
|
|
返回 |
|
計算沿給定維度的 n 階前向差分。 |
|
根據愛因斯坦求和約定指定的維度,對輸入 |
|
將 |
|
沿 dims 中的給定軸反轉 n 維張量的順序。 |
|
左右翻轉張量,返回一個新張量。 |
|
上下翻轉張量,返回一個新張量。 |
|
計算 |
|
在 dims 軸指定的平面中將 n 維張量旋轉 90 度。 |
|
計算 |
|
計算張量的直方圖。 |
|
計算張量中值的直方圖。 |
|
計算張量中值的多維直方圖。 |
|
建立由 attr:tensors 中的 1D 輸入指定的座標網格。 |
|
計算 |
|
返回 |
|
返回一個連續的扁平化張量。 |
|
返回一個張量,其中 |
|
重複張量的元素。 |
|
沿著給定維度滾動張量 |
|
在 |
|
返回張量 a 和 b 在多個維度上的收縮(contraction)。 |
|
返回輸入二維矩陣對角線元素的和。 |
|
返回矩陣(二維張量)或矩陣批次 |
|
返回一個 |
|
返回矩陣(二維張量)或矩陣批次 |
|
返回一個 |
|
將輸入張量的一個維度擴充套件為多個維度。 |
|
生成一個範德蒙德矩陣。 |
|
返回 |
|
返回 |
|
如果 |
|
如果 |
BLAS 和 LAPACK 操作¶
對儲存在 |
|
對矩陣 |
|
對矩陣 |
|
對向量 |
|
對 |
|
對儲存在 |
|
返回 個二維張量的矩陣乘積。 |
|
計算對稱正定矩陣 或批次對稱正定矩陣的 Cholesky 分解。 |
|
給定複數 Hermitian 矩陣或實數對稱正定矩陣的 Cholesky 分解,計算其逆。 |
|
給定複數 Hermitian 或實數對稱正定左側 (lhs) 矩陣的 Cholesky 分解,計算線性方程組的解。 |
|
計算兩個一維張量的點積。 |
|
這是一個直接呼叫 LAPACK 的 geqrf 的底層函式。 |
|
|
|
計算一維張量的點積。 |
|
計算方陣或批次方陣的對數行列式。 |
|
計算矩陣 |
|
使用 |
|
將 |
|
兩個張量的矩陣乘積。 |
|
對矩陣 |
|
對矩陣 |
|
計算 Householder 矩陣乘積與通用矩陣的矩陣乘法。 |
|
|
|
計算矩陣或矩陣批次 |
|
計算矩陣或矩陣批次 |
|
返回矩陣、矩陣批次或稀疏矩陣 的奇異值分解 |
|
對低秩矩陣、此類矩陣的批次或稀疏矩陣執行線性主成分分析 (PCA)。 |
|
使用無矩陣 LOBPCG 方法查詢對稱正定廣義特徵值問題的 k 個最大(或最小)特徵值及對應的特徵向量。 |
|
|
|
沿維度 |
|
沿維度 |
|
求解具有方形上三角或下三角可逆矩陣 和多個右側矩陣(向量) 的方程組。 |
|
沿維度計算兩個一維向量的點積。 |
Foreach 操作¶
警告
此 API 處於 Beta 階段,未來可能發生不相容的更改。不支援前向模式自動微分 (AD)。
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
|
將 |
工具函式¶
返回 PyTorch 是否是使用 _GLIBCXX_USE_CXX11_ABI=1 構建的。 |
|
返回對提供的輸入張量執行算術運算後會產生的 |
|
根據型別提升文件中描述的 PyTorch 型別轉換規則,判斷是否允許進行型別轉換。 |
|
返回具有最小大小和標量種類(scalar kind),且不小於也不低於 type1 或 type2 的 |
|
設定 PyTorch 操作是否必須使用“確定性”演算法。 |
|
如果全域性確定性標誌開啟,則返回 True。 |
|
如果全域性確定性標誌設定為僅警告模式,則返回 True。 |
|
設定確定性操作的除錯模式。 |
|
返回確定性操作當前除錯模式的值。 |
|
設定 float32 矩陣乘法的內部精度。 |
|
返回 float32 矩陣乘法當前精度值。 |
|
當此標誌為 False(預設值)時,某些 PyTorch 警告可能每個程序僅顯示一次。 |
|
返回與給定裝置(例如,torch.device('cuda'), "mtia:0", "xpu", ...)關聯的模組。 |
|
如果全域性 warn_always 標誌開啟,則返回 True。 |
|
vmap 是向量化對映; |
|
Python assert 的一個包裝器,可以進行符號跟蹤。 |
符號數值¶
- 類 torch.SymBool(node)[source][source]¶
類似於 bool (包括魔術方法),但將所有操作重定向到包裝的節點。這特別用於在符號形狀工作流中符號記錄操作。
與普通 bool 不同,普通布林運算子會強制增加 guards,而不是符號求值。請改用按位運算子來處理此問題。
SymInt 感知的 float 型別轉換工具函式。 |
|
SymInt 感知的 int 型別轉換工具函式。 |
|
SymInt 感知的 max 工具函式,避免在 a < b 上分支。 |
|
SymInt 感知的 min() 工具函式。 |
|
SymInt 感知的邏輯非工具函式。 |
|
N 元加法,對於長列表比迭代二元加法計算更快。 |