阅读(8.4k) 书签 (0)

TensorFlow计算方阵的Cholesky分解

2018-09-09 17:27 更新

tf.cholesky

cholesky (
input,
name = None
)

参考指南:数学函数>矩阵数学函数

计算一个或多个方阵的 Cholesky 分解.

输入是一个张量的形状:[..., M, M],其最内侧的2个维形成方形矩阵,具有与上述单矩阵 Cholesky 分解相同的约束条件.输出是与包含所有输入子矩阵 [..,:,:] 的 Cholesky 分解的输入相同形状的张量.

ARGS:

  • input:一个张量.必须是以下类型之一:float64,float32.形状是 [..., M, M].
  • name:操作的名称(可选).

返回:

返回一个张量,与 input 具有相同的类型.形状是 [..., M, M].

tf.cholesky_solve

cholesky_solve ( 
    chol , 
    rhs , 
    name = None
 )

定义在:tensorflow/python/ops/linalg_ops.py.

参考指南:数学函数>矩阵数学函数

求解系统的线性方程 A X = RHS,给出 Cholesky 因式分解.

#解决10个独立的2x2线性系统: 
A =  ... #shape 10x2x2 
RHS =  ... #shape 10x2x1
chol = tf .cholesky(A)  #shape 10x2x2 
X = tf .cholesky_solve ( CHOL , RHS )  #10形状×2×1个
#tf.matmul(A,X)〜RHS 
X[3,:,0]   #解线性系统A [3,:,:1 = RHS [ 3,,,0]

#解决长度为10批次的每个成员的五个线性系统(K = 5).
A =  ... #shape 10x2x2 
RHS =  ... #shape 10x2 x5 
...
X[3 ,:,2 ]   #解线性系统A [3,:,:1 = RHS [3,:1,2]

ARGS:

  • chol:一个张量.类型必须是 float32 或 float64,形状是 [..., M, M].Cholesky 分解 A,例如 chol = tf.cholesky(A).因此,只有 chol 的最后两个维度的下三角形部分(包括对角线)被使用.严格上半部分被假定为零并且不被访问.
  • rhs:一个张量,与 chol 有相同类型,形状是 [..., M, K].
  • name:操作的名字.默认为 cholesky_solve.

返回:

返回解决方案 A x = rhs,形状是 [..., M, K].