Keras 3 API 文件 / 運算 API / 線性代數運算

線性代數運算

[原始碼]

cholesky 函數

keras.ops.cholesky(x)

計算正半定矩陣的 Cholesky 分解。

參數

  • x:形狀為 (..., M, M) 的輸入張量。

返回

形狀為 (..., M, M) 的張量,表示 x 的下三角 Cholesky 因子。


[原始碼]

det 函數

keras.ops.det(x)

計算方陣張量的行列式。

參數

  • x:形狀為 (..., M, M) 的輸入張量。

返回

形狀為 (...,) 的張量,表示 x 的行列式。


[原始碼]

eig 函數

keras.ops.eig(x)

計算方陣的特徵值和特徵向量。

參數

  • x:形狀為 (..., M, M) 的輸入張量。

返回

  • 包含兩個張量的元組:一個形狀為 (..., M) 包含特徵值的張量,以及一個形狀為 (..., M, M) 包含特徵向量的張量。

[原始碼]

eigh 函數

keras.ops.eigh(x)

計算複 Hermitian 矩陣的特徵值和特徵向量。

參數

  • x:形狀為 (..., M, M) 的輸入張量。

返回

  • 包含兩個張量的元組:一個形狀為 (..., M) 包含特徵值的張量,以及一個形狀為 (..., M, M) 包含特徵向量的張量。

[原始碼]

inv 函數

keras.ops.inv(x)

計算方陣張量的逆矩陣。

參數

  • x:形狀為 (..., M, M) 的輸入張量。

返回

形狀為 (..., M, M) 的張量,表示 x 的逆矩陣。


[原始碼]

logdet 函數

keras.ops.logdet(x)

計算 Hermitian 正定矩陣的行列式對數。

參數

  • x:輸入矩陣。必須是 2D 且為方陣。

返回

矩陣行列式的自然對數。


[原始碼]

lstsq 函數

keras.ops.lstsq(a, b, rcond=None)

返回線性矩陣方程式的最小平方解。

計算向量 x,近似求解方程式 a @ x = b。該方程式可能是欠定、適定或超定的(即,a 的線性獨立行數可能小於、等於或大於其線性獨立列數)。如果 a 是方陣且滿秩,則 x(但有捨入誤差)是方程式的精確解。否則,x 會最小化 b - a * x 的 L2 範數。

如果有多個最小化解,則返回 L2 範數最小的解。

參數

  • a:形狀為 (M, N) 的「係數」矩陣。
  • b:縱坐標或「應變數」值,形狀為 (M,)(M, K)。如果 b 是二維的,則為 b 的每個 K 列計算最小平方解。
  • rconda 的小奇異值的截止比率。為了確定秩,如果奇異值小於 rcond 乘以 a 的最大奇異值,則將奇異值視為零。

返回

形狀為 (N,)(N, K) 的張量,包含最小平方解。

注意: 輸出與 numpy.linalg.lstsq 不同。NumPy 返回一個包含四個元素的元組,其中第一個是最小平方解,其他基本上從未使用。Keras 僅返回第一個值。這樣做既是為了確保跨後端的一致性(其他值無法實現),也是為了簡化 API。


[原始碼]

lu_factor 函數

keras.ops.lu_factor(x)

計算方陣的 LU 分解。

參數

  • x:形狀為 (..., M, M) 的張量。

返回

  • 包含兩個張量的元組:一個形狀為 (..., M, M) 的張量,包含下三角矩陣和上三角矩陣,以及一個形狀為 (..., M) 的張量,包含主元。

[原始碼]

norm 函數

keras.ops.norm(x, ord=None, axis=None, keepdims=False)

矩陣或向量範數。

此函數能夠返回八種不同的矩陣範數之一,或無限數量的向量範數之一(如下所述),具體取決於 ord 參數的值。

參數

  • x:輸入張量。
  • ord:範數的階數(請參閱「注意事項」下的表格)。預設為 None
  • axis:如果 axis 是整數,則指定 x 的軸,沿該軸計算向量範數。如果 axis 是 2 元組,則指定保存 2D 矩陣的軸,並計算這些矩陣的矩陣範數。
  • keepdims:如果設定為 True,則縮減的軸將保留在結果中,作為大小為一的維度。

注意:對於 ord < 1 的值,嚴格來說,結果不是數學上的「範數」,但它可能仍然對各種數值目的有用。可以計算以下範數: - 對於矩陣: - ord=None:Frobenius 範數 - ord="fro":Frobenius 範數 - ord="nuc":核範數 - ord=np.infmax(sum(abs(x), axis=1)) - ord=-np.infmin(sum(abs(x), axis=1)) - ord=0:不支援 - ord=1max(sum(abs(x), axis=0)) - ord=-1min(sum(abs(x), axis=0)) - ord=2:2-範數(最大奇異值)- ord=-2:最小奇異值 - 其他:不支援 - 對於向量: - ord=None:2-範數 - ord="fro":不支援 - ord="nuc":不支援 - ord=np.infmax(abs(x)) - ord=-np.infmin(abs(x)) - ord=0sum(x != 0) - ord=1:如下 - ord=-1:如下 - ord=2:如下 - ord=-2:如下 - 其他:sum(abs(x)**ord)**(1./ord)

返回

矩陣或向量的範數。

範例

>>> x = keras.ops.reshape(keras.ops.arange(9, dtype="float32") - 4, (3, 3))
>>> keras.ops.linalg.norm(x)
7.7459664

[原始碼]

qr 函數

keras.ops.qr(x, mode="reduced")

計算張量的 QR 分解。

參數

  • x:形狀為 (..., M, N) 的輸入張量。
  • mode:指定 QR 分解模式的字串。
    • 'reduced':返回簡化 QR 分解。(預設)
    • 'complete':返回完整 QR 分解。

返回

包含兩個張量的元組。第一個形狀為 (..., M, K) 的張量是正交矩陣 q,第二個形狀為 (..., K, N) 的張量是上三角矩陣 r,其中 K = min(M, N)

範例

>>> x = keras.ops.convert_to_tensor([[1., 2.], [3., 4.], [5., 6.]])
>>> q, r = qr(x)
>>> print(q)
array([[-0.16903079  0.897085]
       [-0.5070925   0.2760267 ]
       [-0.8451542  -0.34503305]], shape=(3, 2), dtype=float32)

[原始碼]

solve 函數

keras.ops.solve(a, b)

求解由 a x = b 給出的線性方程式系統。

參數

  • a:形狀為 (..., M, M) 的張量,表示係數矩陣。
  • b:形狀為 (..., M)(..., M, N) 的張量,表示右手邊或「應變數」矩陣。

返回

形狀為 (..., M)(..., M, N) 的張量,表示線性系統的解。返回的形狀與 b 相同。


[原始碼]

solve_triangular 函數

keras.ops.solve_triangular(a, b, lower=False)

求解由 a x = b 給出的線性方程式系統。

參數

  • a:形狀為 (..., M, M) 的張量,表示係數矩陣。
  • b:形狀為 (..., M)(..., M, N) 的張量,表示右手邊或「應變數」矩陣。

返回

形狀為 (..., M)(..., M, N) 的張量,表示線性系統的解。返回的形狀與 b 相同。


[原始碼]

svd 函數

keras.ops.svd(x, full_matrices=True, compute_uv=True)

計算矩陣的奇異值分解。

參數

  • x:形狀為 (..., M, N) 的輸入張量。

返回

  • 包含三個張量的元組:一個形狀為 (..., M, M) 的張量,包含左奇異向量;一個形狀為 (..., M, N) 的張量,包含奇異值;以及一個形狀為 (..., N, N) 的張量,包含右奇異向量。