当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.raw_ops.MatrixTriangularSolve用法及代码示例


通过反向代换求解具有上三角矩阵或下三角矩阵的线性方程组。

用法

tf.raw_ops.MatrixTriangularSolve(
    matrix, rhs, lower=True, adjoint=False, name=None
)

参数

  • matrix 一个Tensor。必须是以下类型之一:bfloat16 , float64 , float32 , half , complex64 , complex128。形状是 [..., M, M]
  • rhs 一个Tensor。必须与 matrix 具有相同的类型。形状是 [..., M, K]
  • lower 可选的 bool 。默认为 True 。布尔值,指示 matrix 中最里面的矩阵是下三角形还是上三角形。
  • adjoint 可选的 bool 。默认为 False 。布尔值,指示是否使用 matrix 或其 (block-wise) 伴随求解。
  • name 操作的名称(可选)。

返回

  • 一个Tensor。具有与 matrix 相同的类型。

matrix 是形状为 [..., M, M] 的张量,其 inner-most 2 维形成方阵。如果lowerTrue,则假定每个inner-most 矩阵的严格上三角部分为零且未被访问。如果 lower 为 False,则假定每个 inner-most 矩阵的严格下三角部分为零且未被访问。 rhs 是形状为 [..., M, N] 的张量。

输出是一个形状为 [..., M, N] 的张量。如果 adjointTrueoutput 中最内层的矩阵满足矩阵方程 matrix[...,:,:] * output[...,:,:] = rhs[...,:,:] 。如果 adjointFalse 则严格来说 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)>

numpy 兼容性

相当于 scipy.linalg.solve_triangular

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.raw_ops.MatrixTriangularSolve。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。