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 是右特徵向量。vlvr 是選用的,並且僅在 compute_left_eigenvectorscompute_right_eigenvectors 分別為 True 時才會包含。

如果特徵分解失敗,則將為該批次元素傳回充滿 NaN 的陣列。

傳回型別:

list[Array]