jax.lax.linalg.eig#
- jax.lax.linalg.eig(x, *, compute_left_eigenvectors=True, compute_right_eigenvectors=True, use_magma=None)[原始碼]#
一般矩陣的特徵分解。
非對稱特徵分解僅在 CPU 和 GPU 上實作。在 GPU 上,預設實作直接在主機 CPU 上呼叫 LAPACK,但使用 MAGMA 的實驗性 GPU 實作也可用。對於小型矩陣(小於約 2048),MAGMA 實作通常比同等的 LAPACK 實作慢,但對於較大的矩陣,它的效能可能會更好。
若要啟用 MAGMA 實作,您必須自行安裝 MAGMA(有 Debian 和 conda-forge 套件,或者您可以從原始碼建置)。然後將
use_magma
引數設定為True
,或將jax_use_magma
設定變數設定為"on"
或"auto"
jax.config.update('jax_use_magma', 'on')
JAX 將嘗試
dlopen
已安裝的 MAGMA 共用程式庫,如果找不到,則會引發錯誤。若要明確指定 MAGMA 程式庫的路徑,請將環境變數 JAX_GPU_MAGMA_PATH 設定為完整安裝路徑。如果
jax_use_magma
設定為"auto"
,如果可以找到程式庫,並且輸入矩陣足夠大 (>= 2048x2048),則將使用 MAGMA 實作。- 參數:
x (ArrayLike) – 形狀為
[..., n, n]
的方形矩陣批次。compute_left_eigenvectors (bool) – 如果為 true,將計算左特徵向量。
compute_right_eigenvectors (bool) – 如果為 true,將計算右特徵向量。
use_magma (bool | None | None) – 本機覆寫
jax_use_magma
標記。如果為True
,則使用 MAGMA 計算特徵分解。如果為False
,則使用 LAPACK 在主機 CPU 上完成計算。如果為None
(預設),則行為由jax_use_magma
標記控制。此引數僅在 GPU 上使用。
- 傳回:
x
的特徵分解,其形式為(w, vl, vr)
的元組,其中w
是特徵值,vl
是左特徵向量,而vr
是右特徵向量。vl
和vr
是選用的,並且僅在compute_left_eigenvectors
或compute_right_eigenvectors
分別為True
時才會包含。如果特徵分解失敗,則將為該批次元素傳回充滿 NaN 的陣列。
- 傳回型別: