阅读(7.6k) 书签 (0)

TensorFlow函数:tf.matrix_solve_ls

2018-11-01 18:26 更新
tf.matrix_solve_ls 函数
matrix_solve_ls(
    matrix,
    rhs,
    l2_regularizer=0.0,
    fast=True,
    name=None
)

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

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

解决一个或多个线性最小二乘法问题.

matrix 是一个形状为 [..., M, N] 的张量,并且该张量最内部的 2 维构成 M-N 矩阵;rhs 是一个形状为 [..., M, K] 的张量,该张量最内部的 2 维构成 M-K 矩阵.由该函数计算得到的输出是一个形状为 [..., N, K] 的张量,该张量最内部的 2 维构成 M-K 矩阵,以最小二乘方式上求解方程:matrix[..., :, :] * output[..., :, :] = rhs[..., :, :].

下面我们将为批次中的每一对矩阵和右边的每一对使用下面的表示法:

matrix=\(A \in \Re^{m \times n}\), rhs=\(B \in \Re^{m \times k}\), output=\(X \in \Re^{n \times k}\), l2_regularizer=\(\lambda\)

如果 fast 的值是 True,则通过使用 Cholesky 分解求解正态方程.具体来说,如果:\(m \ge n\),那么:\(X = (A^T A + \lambda I)^{-1} A^T B\),解决了最小二乘问题:\(X = \mathrm{argmin}{Z \in \Re^{n \times k}} ||A Z - B||_F^2 + \lambda ||Z||_F^2\),如果:\(m \lt n\), output 计算为:\(X = A^T (A A^T + \lambda I)^{-1} B\),(for \(\lambda = 0\)) 是对于未确定的线性系统的最小范数解,即:\(X = \mathrm{argmin}{Z \in \Re^{n \times k}} ||Z||F^2 \) 到 \(A Z = B\).请注意,当 \(A\) 是数值上的完全秩并且有条件号\(\mathrm{cond} (A) \lt \frac{1}{\sqrt{\epsilon{mach}}}\) 或者 \(\lambda\) 足够大时,fast 路径只有数值稳定.

如果 fast 值为 False,则采用基于数字 robust 的完全正交分解的算法.即使 \(A\) 是秩不足的,也可以计算出最小范数最小二乘解.该路径通常比 fast 路径慢 6-7倍.如果 fast 的值为 False,则 l2_regularizer 将被忽略.

参数:

  • matrix:形状为 [..., M, N] 的张量.
  • rhs:形状为 [..., M, K] 的张量.
  • l2_regularizer:0维双张量.如果 fast=False,则忽略.
  • fast:布尔值,默认为 True.
  • name:字符串类型值,可选的操作名称.

返回值:

  • output:形状为 [..., N, K] 的张量,该张量最内部的 2 维构成 M-K 矩阵,以最小二乘方式上求解方程:matrix[..., :, :] * output[..., :, :] = rhs[..., :, :].