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


Python tf.linalg.triangular_solve用法及代码示例


求解具有上三角矩阵或下三角矩阵的线性方程组。

用法

tf.linalg.triangular_solve(
    matrix, rhs, lower=True, adjoint=False, name=None
)

参数

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

返回

  • 一个Tensor。具有与矩阵相同的类型,形状为 [..., M, N]

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

输出是一个形状为 [..., M, N] 的张量。如果 adjointTrue 则输出中最内层的矩阵满足矩阵方程 sum_k matrix[..., i, k] * output[..., k, j] = rhs[..., i, j] 。如果 adjointFalse 则输出中最内层的矩阵满足矩阵方程 sum_k 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)>
tf.matmul(a, x)
<tf.Tensor:shape=(4, 1), dtype=float32, numpy=
array([[4.],
       [2.],
       [4.],
       [2.]], dtype=float32)>

相关用法


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