使用帶狀求解器求解三角方程組。
用法
tf.linalg.banded_triangular_solve(
bands, rhs, lower=True, adjoint=False, name=None
)參數
-
bandsATensor說明左側的條帶,形狀為[..., K, M]。當lower是True時,K行對應於第K - 1對角線的對角線(對角線是頂行),否則為對角線的第K - 1上對角線(對角線是底行)當lower是False。波段以 'LEFT_RIGHT' 對齊方式存儲,其中上對角線在右側填充,下對角線在左側填充。這是 cuSPARSE 使用的對齊方式。有關詳細信息,請參閱tf.linalg.set_diag。 -
rhs形狀為 [..., M] 或 [..., M, N] 的Tensor並且具有與diagonals相同的 dtype。請注意,如果rhs和/或diags的形狀不是靜態已知的,則rhs將被視為矩陣而不是向量。 -
lower可選的bool。默認為True。布爾值,指示bands是表示下三角矩陣還是上三角矩陣。 -
adjoint可選的bool。默認為False。布爾值,指示是否使用矩陣的block-wise 伴隨求解。 -
name給此Op的名稱(可選)。
返回
-
包含解決方案的形狀為 [..., M] 或 [..., M, N] 的
Tensor。
bands 是形狀為 [..., K, M] 的張量,其中 K 表示存儲的波段數。這對應於一批 M by M 矩陣,其 K 次對角線(當 lower 為 True 時)被存儲。
該算子廣播 bands 的批次維度和 rhs 的批次維度。
例子:
存儲 3x3 矩陣的 2 個波段。請注意,由於'LEFT_RIGHT' 填充,第二行中的第一個元素被忽略。
x = [[2., 3., 4.], [1., 2., 3.]]
x2 = [[2., 3., 4.], [10000., 2., 3.]]
y = tf.zeros([3, 3])
z = tf.linalg.set_diag(y, x, align='LEFT_RIGHT', k=(-1, 0))
z
<tf.Tensor:shape=(3, 3), dtype=float32, numpy=
array([[2., 0., 0.],
[2., 3., 0.],
[0., 3., 4.]], dtype=float32)>
soln = tf.linalg.banded_triangular_solve(x, tf.ones([3, 1]))
soln
<tf.Tensor:shape=(3, 1), dtype=float32, numpy=
array([[0.5 ],
[0. ],
[0.25]], dtype=float32)>
are_equal = soln == tf.linalg.banded_triangular_solve(x2, tf.ones([3, 1]))
tf.reduce_all(are_equal).numpy()
True
are_equal = soln == tf.linalg.triangular_solve(z, tf.ones([3, 1]))
tf.reduce_all(are_equal).numpy()
True
存儲 2 個 4x4 矩陣的超對角線。由於'LEFT_RIGHT' 填充,第一行的最後一個元素被忽略。
x = [[2., 3., 4., 5.], [-1., -2., -3., -4.]]
y = tf.zeros([4, 4])
z = tf.linalg.set_diag(y, x, align='LEFT_RIGHT', k=(0, 1))
z
<tf.Tensor:shape=(4, 4), dtype=float32, numpy=
array([[-1., 2., 0., 0.],
[ 0., -2., 3., 0.],
[ 0., 0., -3., 4.],
[ 0., 0., -0., -4.]], dtype=float32)>
soln = tf.linalg.banded_triangular_solve(x, tf.ones([4, 1]), lower=False)
soln
<tf.Tensor:shape=(4, 1), dtype=float32, numpy=
array([[-4. ],
[-1.5 ],
[-0.6666667],
[-0.25 ]], dtype=float32)>
are_equal = (soln == tf.linalg.triangular_solve(
z, tf.ones([4, 1]), lower=False))
tf.reduce_all(are_equal).numpy()
True
相關用法
- Python tf.linalg.band_part用法及代碼示例
- Python tf.linalg.LinearOperatorFullMatrix.matvec用法及代碼示例
- Python tf.linalg.LinearOperatorToeplitz.solve用法及代碼示例
- Python tf.linalg.LinearOperatorIdentity.solvevec用法及代碼示例
- Python tf.linalg.LinearOperatorPermutation.solve用法及代碼示例
- Python tf.linalg.LinearOperatorKronecker.diag_part用法及代碼示例
- Python tf.linalg.lu_matrix_inverse用法及代碼示例
- Python tf.linalg.LinearOperatorToeplitz.matvec用法及代碼示例
- Python tf.linalg.LinearOperatorBlockLowerTriangular.solvevec用法及代碼示例
- Python tf.linalg.LinearOperatorLowerTriangular.matvec用法及代碼示例
- Python tf.linalg.LinearOperatorCirculant2D.solve用法及代碼示例
- Python tf.linalg.LinearOperatorCirculant3D.diag_part用法及代碼示例
- Python tf.linalg.LinearOperatorToeplitz.solvevec用法及代碼示例
- Python tf.linalg.LinearOperatorCirculant2D.assert_non_singular用法及代碼示例
- Python tf.linalg.LinearOperatorPermutation.diag_part用法及代碼示例
- Python tf.linalg.LinearOperatorToeplitz用法及代碼示例
- Python tf.linalg.LinearOperatorCirculant2D.matvec用法及代碼示例
- Python tf.linalg.LinearOperatorTridiag.solvevec用法及代碼示例
- Python tf.linalg.LinearOperatorTridiag.solve用法及代碼示例
- Python tf.linalg.LinearOperatorZeros.matmul用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.linalg.banded_triangular_solve。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
