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。
| 透過複製  | |
| 以給定的  | |
| 以給定的  | |
| 以給定的  | |
| 以給定的  | |
| 使用給定的  | |
| 將  | |
| 將  | |
| 使用指定的  | |
| 創建一個 CPU 張量,其存儲由內存映射文件支持。 | |
| 從  | |
| 將外部庫中的張量轉換為  | |
| 從實現 Python 緩衝區協議的對象創建一個一維  | |
| 返回一個填充了標量值 0 的張量,其形狀由可變參數  | |
| 返回一個填充了標量值 0 的張量,其大小與  | |
| 返回一個填充了標量值 1 的張量,其形狀由可變參數  | |
| 返回一個填充了標量值 1 的張量,其大小與  | |
| 返回一個大小為  的一維張量,其值從區間  | |
| 返回一個大小為  的一維張量,其值從  | |
| 創建一個大小為  | |
| 創建一個大小為  | |
| 返回一個二維張量,對角線上的元素為 1,其他元素為 0。 | |
| 返回一個填充了未初始化數據的張量。 | |
| 返回一個與  | |
| 創建一個具有指定  | |
| 創建一個大小為  | |
| 返回一個與  | |
| 使用給定的比例因子和零點,將浮點數張量轉換為量化張量。 | |
| 使用給定的比例因子和零點,將浮點數張量轉換為逐通道量化張量。 | |
| 通過反量化量化張量,返回一個 fp32 張量。 | |
| 計算  | 
索引、切片、連接、變異操作¶
| 返回張量的共軛視圖,並轉置最後兩個維度。 | |
| 返回一個張量,其中包含  | |
| 在給定維度上連接給定的  | |
| 
 | |
| 
 | |
| 返回  | |
| 嘗試將張量拆分為指定數量的塊。 | |
| 根據  | |
| 通過水平堆疊  | |
| 按深度方向(沿第三個軸)依次堆疊張量。 | |
| 沿 dim 指定的軸收集值。 | |
| 根據  | |
| 依序水平堆疊張量(以列為單位)。 | |
| 函數說明請參閱  | |
| 函數說明請參閱  | |
| 函數說明請參閱  | |
| 傳回一個新的張量,它會使用 LongTensor 類型的  | |
| 傳回一個新的 1 維張量,它會根據 BoolTensor 類型的布林遮罩  | |
| 將  | |
| 
 | |
| 傳回一個新的張量,它是  | |
| 與  | |
| 傳回原始張量  | |
| 傳回一個與  | |
| 
 | |
| 沿著選定的維度,在給定的索引處切割  | |
| 
 | |
| 將  | |
| 將  | |
| 將  | |
| 
 | |
| 將張量拆分為多個區塊。 | |
| 傳回一個張量,其中所有大小為 1 的指定維度  | |
| 沿著新的維度串聯多個張量。 | |
| 
 | |
| 
 | |
| 預期  | |
| 傳回一個新的張量,其中包含位於給定索引處的  | |
| 沿著給定的  | |
| 沿著維度  | |
| 藉由重複  | |
| 傳回一個張量,它是  | |
| 移除張量維度。 | |
| 將扁平索引的張量轉換為坐標張量的元組,這些坐標張量會索引到指定形狀的任意張量。 | |
| 傳回一個新的張量,其中在指定位置插入一個大小為一的維度。 | |
| 根據  | |
| 依序垂直堆疊張量(以行為單位)。 | |
| 根據  | 
隨機取樣¶
| 將所有裝置上用於產生亂數的種子設定為非確定性亂數。 | |
| 設定所有裝置上用於產生亂數的種子。 | |
| 以 Python long 型別傳回用於產生亂數的初始種子。 | |
| 以 torch.ByteTensor 型別傳回亂數產生器狀態。 | |
| 設定亂數產生器狀態。 | 
- torch.default_generator 傳回 預設的 CPU torch.Generator¶
| 從伯努利分佈中繪製二元亂數(0 或 1)。 | |
| 傳回一個張量,其中每一列包含從多項式機率分佈(更嚴格的定義是多變量,有關詳細資訊,請參閱 torch.distributions.multinomial.Multinomial)中取樣的  | |
| 傳回一個由亂數組成的張量,這些亂數是從獨立的常態分佈中繪製的,其均值和標準差已給定。 | |
| 傳回一個與  | |
| 傳回一個張量,其中填滿了從區間 上的均勻分佈中生成的亂數。 | |
| 傳回一個與  | |
| 傳回一個張量,其中填滿了在  | |
| 傳回一個與張量  | |
| 傳回一個張量,其中填滿了從均值為 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。 | 
數學運算¶
逐點運算¶
| 計算  | |
| 
 | |
| 計算  | |
| 
 | |
| 傳回一個新的張量,其中包含  | |
| 
 | |
| 將  | |
| 執行  | |
| 執行  | |
| 計算給定  | |
| 傳回一個新的張量,其中包含  | |
| 
 | |
| 傳回一個新的張量,其中包含  | |
| 
 | |
| 傳回一個新的張量,其中包含  | |
| 
 | |
| 傳回一個新的張量,其中包含  | |
| 
 | |
| 的逐元素反正切,並考慮象限。 | |
| 
 | |
| 計算給定輸入張量的位元反轉。 | |
| 計算  | |
| 計算  | |
| 計算  | |
| 計算  | |
| 計算  | |
| 傳回一個新的張量,其中包含  | |
| 
 | |
| 計算給定  | |
| 建立一個新的浮點數張量,其大小與  | |
| 傳回一個新的張量,其中包含  | |
| 傳回一個新的張量,其中包含  | |
| 傳回一個新的張量,其中包含  | |
| 將輸入  | |
| 
 | |
| 
 | |
| 
 | |
| 傳回一個新的張量,其中包含輸入張量  | |
| 
 | |
| 傳回一個新的張量,其中  | |
| 傳回一個新的張量,其中  | |
| 
 | |
| 將  | |
| 傳回一個新的張量,其中包含  | |
| 逐元素應用 C++ 的 std::fmod。 | |
| 計算  | |
| 將  | |
| 使用 二階精確中央差分法 估計函數 在一個或多個維度上的梯度,並在邊界處使用一階或二階估計。 | |
| 傳回一個新的張量,其中包含  | |
| 將  | |
| 根據標量或張量  | |
| 計算  | |
| 傳回一個新的張量,其中包含  | |
| 傳回一個新的張量,其中包含  | |
| 傳回一個新的張量,其中包含 (1 +  | |
| 傳回一個新的張量,其中包含  | |
| 輸入值的指數總和的對數。 | |
| 輸入值以 2 為底的指數總和的對數。 | |
| 計算給定輸入張量的逐元素邏輯 AND 運算。 | |
| 計算給定輸入張量的逐元素邏輯 NOT 運算。 | |
| 計算給定輸入張量的逐元素邏輯 OR 運算。 | |
| 計算給定輸入張量的逐元素邏輯 XOR 運算。 | |
| 給定直角三角形的兩股,傳回其斜邊長。 | |
| 
 | |
| 將  | |
| 
 | |
| 將  | |
| 傳回一個新的張量,其中包含  | |
| 
 | |
| 傳回  | |
| 傳回  | |
| 使用  | |
| 對 4D (NCHW) 量化張量應用批次正規化。 | |
| 對由多個輸入平面組成的輸入量化張量應用 1D 最大池化。 | |
| 對由多個輸入平面組成的輸入量化張量應用 2D 最大池化。 | |
| 傳回一個新的張量,其中包含  | |
| 傳回一個新的張量,其中包含  | |
| 傳回一個新的張量,其中包含  | |
| 逐元素計算 Python 的模數運算。 | |
| 將  | |
| 傳回一個新的張量,其中包含  | |
| 傳回一個新的張量,其中包含  | |
| 此函數是 torch.sign() 對複數張量的擴展。 | |
| 測試  | |
| 傳回一個新的張量,其中包含  | |
| 
 | |
| 傳回一個新的張量,其中包含  | |
| 傳回一個新的張量,其中包含  | |
| 傳回一個新的張量,其中包含  | |
| 從  | |
| 
 | |
| 傳回一個新的張量,其中包含  | |
| 傳回一個新的張量,其中包含  | |
| 
 | |
| 傳回一個新的張量,其中包含  | |
歸約運算¶
| 傳回  | |
| 傳回扁平化張量或沿某個維度的最小值的索引。 | |
| 傳回給定維度  | |
| 傳回給定維度  | |
| 計算  | |
| 測試  | |
| 測試  | |
| 傳回  | |
| 傳回  | |
| 傳回 ( | |
| 傳回給定維度  | |
| 傳回  | |
| 計算沿指定維度所有 非 NaN 元素的平均值。 | |
| 傳回  | |
| 傳回  | |
| 傳回一個命名元組  | |
| 傳回給定張量的矩陣範數或向量範數。 | |
| 傳回所有元素的總和,將非數值 (NaN) 視為零。 | |
| 傳回  | |
| 計算  | |
| 這是  | |
| 計算  | |
| 計算  | |
| 傳回  | |
| 傳回輸入張量的唯一元素。 | |
| 從每個等效元素的連續組中刪除除第一個元素之外的所有元素。 | |
| 計算  | |
| 計算  | |
| 計算張量  | 
比較運算¶
| 此函數檢查  | |
| 傳回按值升序對張量沿給定維度排序的索引。 | |
| 逐元素計算相等性 | |
| 如果兩個張量的大小和元素相同,則為  | |
| 逐元素計算 。 | |
| 
 | |
| 逐元素計算 。 | |
| 
 | |
| 傳回一個新的張量,其中包含布林元素,表示  | |
| 傳回一個新的張量,其中包含布林元素,表示每個元素是否為 有限數。 | |
| 測試  | |
| 測試  | |
| 測試  | |
| 測試  | |
| 傳回一個新的張量,其中包含布林元素,表示  | |
| 傳回一個新的張量,其中包含布林元素,表示  | |
| 傳回一個 namedtuple  | |
| 以元素方式計算 。 | |
| 
 | |
| 以元素方式計算 。 | |
| 
 | |
| 計算  | |
| 計算  | |
| 計算  | |
| 計算  | |
| 以元素方式計算 。 | |
| 
 | |
| 沿著給定維度,按值遞增排序  | |
| 沿著給定維度,傳回給定  | |
| 沿著第一個維度,按值遞增排序  | 
頻譜運算¶
| 短時傅立葉變換 (STFT)。 | |
| 反向短時傅立葉變換。 | |
| Bartlett 窗函數。 | |
| Blackman 窗函數。 | |
| Hamming 窗函數。 | |
| Hann 窗函數。 | |
| 計算窗口長度為  | 
其他運算¶
| 傳回每個輸入張量的 1 維視圖,維度為零。 | |
| 傳回每個輸入張量的 2 維視圖,維度為零。 | |
| 傳回每個輸入張量的 3 維視圖,維度為零。 | |
| 計算非負整數陣列中每個值的出現頻率。 | |
| 從提供的張量建立區塊對角矩陣。 | |
| 根據 廣播語義 廣播給定的張量。 | |
| 將  | |
| 類似於  | |
| 傳回  | |
| 對給定張量序列進行笛卡爾積。 | |
| 計算兩個行向量集合中每對向量之間的批量 p-範數距離。 | |
| 傳回  | |
| 計算給定張量的長度為 的組合。 | |
| 估計由  | |
| 估計由  | |
| 傳回  | |
| 傳回一個 namedtuple  | |
| 傳回一個 namedtuple  | |
| 傳回  | |
| 傳回  | |
| 
 | |
| 建立一個張量,其某些 2D 平面(由  | |
| 
 | |
| 傳回  | |
| 沿著給定維度計算第 n 個前向差。 | |
| 沿著使用基於愛因斯坦求和約定的符號指定的維度,對輸入  | |
| 透過將  | |
| 沿著 dims 中的給定軸反轉 n 維張量的順序。 | |
| 在左/右方向翻轉張量,傳回一個新的張量。 | |
| 在上/下方向翻轉張量,傳回一個新的張量。 | |
| 計算  | |
| 在由 dims 軸指定的平面上將 n 維張量旋轉 90 度。 | |
| 計算  | |
| 計算張量的直方圖。 | |
| 計算張量中值的直方圖。 | |
| 計算張量中值的多維直方圖。 | |
| 建立由 attr:tensors 中的 1D 輸入指定的座標網格。 | |
| 計算  | |
| 傳回  | |
| 傳回一個連續的展平張量。 | |
| 傳回一個張量,其中沿著維度  | |
| 重複張量的元素。 | |
| 沿給定維度反轉張量  | |
| 從  | |
| 傳回 a 和 b 在多個維度上的縮併。 | |
| 傳回輸入二維矩陣對角線元素的總和。 | |
| 傳回矩陣(二維張量)或矩陣批次  | |
| 以 2×N 張量的形式傳回  | |
| 傳回矩陣(二維張量)或矩陣批次  | |
| 以 2×N 張量的形式傳回  | |
| 展開輸入張量在多個維度上的一個維度。 | |
| 產生萬德蒙矩陣。 | |
| 將  | |
| 將  | |
| 如果  | |
| 如果  | 
BLAS 和 LAPACK 運算¶
| 對儲存在  | |
| 對矩陣  | |
| 對矩陣  | |
| 執行向量  | |
| 對  | |
| 對儲存在  | |
| 傳回 個二維張量的矩陣乘積。 | |
| 計算對稱正定矩陣 或對稱正定矩陣批次的 Cholesky 分解。 | |
| 計算複數 Hermitian 或實數對稱正定矩陣在其 Cholesky 分解下的逆矩陣。 | |
| 計算具有複數 Hermitian 或實數對稱正定 lhs 的線性方程組的解,給定其 Cholesky 分解。 | |
| 計算兩個一維張量的點積。 | |
| 這是直接呼叫 LAPACK 的 geqrf 的低階函數。 | |
| 
 | |
| 計算一維張量的點積。 | |
| 計算方陣或方陣批次的對數行列式。 | |
| 計算矩陣或矩陣批次  | |
| 使用  | |
| 將  | |
| 兩個張量的矩陣乘積。 | |
| 對矩陣  | |
| 對矩陣  | |
| 計算 Householder 矩陣乘積與一般矩陣的矩陣乘法。 | |
| 
 | |
| 計算矩陣或矩陣批次  | |
| 計算矩陣或矩陣批次  | |
| 傳回矩陣、矩陣批次或稀疏矩陣  的奇異值分解  | |
| 對低秩矩陣、此類矩陣的批次或稀疏矩陣執行線性主成分分析 (PCA)。 | |
| 使用無矩陣 LOBPCG 方法,找出對稱正定廣義特徵值問題的 k 個最大(或最小)特徵值和對應的特徵向量。 | |
| 
 | |
| 沿著  | |
| 沿著  | |
| 使用方形上三角或下三角可逆矩陣 和多個右側向量 解決方程式系統。 | |
| 沿著維度計算兩個一維向量的點積。 | 
Foreach 操作¶
警告
此 API 處於測試階段,未來可能會有所變更。不支援正向模式 AD。
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | |
| 將  | 
公用程式¶
| 傳回 PyTorch 是否使用 _GLIBCXX_USE_CXX11_ABI=1 建置 | |
| 傳回對提供的輸入張量執行算術運算後會產生的  | |
| 判斷在類型提升 文件 中說明的 PyTorch 轉換規則下,是否允許類型轉換。 | |
| 傳回大小和純量種類最小,且不小於或種類低於 type1 或 type2 的  | |
| 設定 PyTorch 操作是否必須使用「確定性」演算法。 | |
| 如果已開啟全域確定性旗標,則傳回 True。 | |
| 如果全域確定性旗標設定為僅警告,則傳回 True。 | |
| 設定確定性操作的除錯模式。 | |
| 傳回確定性操作除錯模式的目前值。 | |
| 設定 float32 矩陣乘法的內部精度。 | |
| 傳回 float32 矩陣乘法精度的目前值。 | |
| 如果此旗標為 False(預設值),則某些 PyTorch 警告可能每個處理程序只會出現一次。 | |
| 返回與給定裝置相關聯的模組(例如,torch.device('cuda')、"mtia:0"、"xpu" 等)。 | |
| 如果全域 warn_always 旗標已開啟,則返回 True。 | |
| vmap 是向量化映射; | |
| Python assert 的包裝器,可進行符號追蹤。 | 
符號數¶
- 類別 torch.SymBool(node)[原始碼]¶
- 類似於 bool(包括魔術方法),但會將所有操作重定向到包裝的節點。這特別用於在符號形狀工作流程中符號記錄操作。 - 與常規布林值不同,常規布林運算符會強制執行額外的防護,而不是符號求值。請改用位元運算符來處理此問題。 
| SymInt 感知的浮點數轉換工具。 | |
| SymInt 感知的整數轉換工具。 | |
| SymInt 感知的最大值工具,可避免在 a < b 時分支。 | |
| SymInt 感知的最小值工具。 | |
| SymInt 感知的邏輯非工具。 | |