tf.raw_ops.MatrixTriangularSolve
Решает системы линейных уравнений с верхними или нижними треугольными матрицами методом обратной подстановки.
tf.raw_ops.MatrixTriangularSolve(
matrix, rhs, lower=True, adjoint=False, name=None
)
matrix — это тензор формы [..., M, M], внутренние 2 измерения которого образуют квадратные матрицы. Если lower равно True, то строго верхняя треугольная часть каждой внутренней матрицы предполагается равной нулю и не используется. Если lower равно False, то строго нижняя треугольная часть каждой внутренней матрицы предполагается равной нулю и не используется. rhs — это тензор формы [..., M, N].
Выходной тензор имеет форму [..., M, N]. Если adjoint равно True, то внутренние матрицы в output удовлетворяют матричным уравнениям matrix[..., :, :] * output[..., :, :] = rhs[..., :, :]. Если adjoint равно False, то внутренние матрицы в output удовлетворяют матричным уравнениям adjoint(matrix[..., i, k]) * output[..., k, j] = rhs[..., i, j].
Обратите внимание, что формы пакетных данных для входных данных должны быть совместимы.
Пример:
a = tf.constant([[3, 0, 0, 0],
[2, 1, 0, 0],
[1, 0, 1, 0],
[1, 1, 1, 1]], dtype=tf.float32)
b = tf.constant([[4],
[2],
[4],
[2]], dtype=tf.float32)
x = tf.linalg.triangular_solve(a, b, lower=True)
x
# <tf.Tensor: shape=(4, 1), dtype=float32, numpy=
# array([[ 1.3333334 ],
# [-0.66666675],
# [ 2.6666665 ],
# [-1.3333331 ]], dtype=float32)>
# in python3 one can use `a@x`
tf.matmul(a, x)
# <tf.Tensor: shape=(4, 1), dtype=float32, numpy=
# array([[4. ],
# [2. ],
# [4. ],
# [1.9999999]], dtype=float32)>
| Аргументы | |
|---|---|
matrix | A Tensor. Должен быть одного из следующих типов: bfloat16, float64, float32, half, complex64, complex128. Форма — [..., M, M]. |
rhs | A Tensor. Должен иметь тот же тип, что и matrix. Форма — [..., M, K]. |
lower | Необязательный bool. По умолчанию True. Булево значение, указывающее, являются ли внутренние матрицы в matrix нижними или верхними треугольными. |
adjoint | Необязательный bool. По умолчанию False. Булево значение, указывающее, решать ли с помощью matrix или её сопряжённой (блочной). |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
A Tensor. Имеет тот же тип, что и matrix. |
Совместимость с numpy
Эквивалентно scipy.linalg.solve_triangular
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/raw_ops/MatrixTriangularSolve