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 感知的邏輯非工具。 |
|