2017-05-28 25 views
1

我想用tensorflow.cholesky_solve來解決一個線性方程組,我得到了一些意想不到的結果。可能tensorflow cholesky_solve不一致?

我寫了一個腳本來比較非常簡單的線性系統的輸出與簡單矩陣求逆器,非基於cholesky的矩陣方程求解器tensorflow.matrix_solvetensorflow.cholesky_solve

根據我對我所鏈接的文檔的理解,這三種情況都應該產生單位矩陣除以2的解,但tensorflow.cholesky_solve並不是這種情況。也許我誤解了文檔?

import tensorflow as tf 

I = tf.eye(2, dtype=tf.float32) 
X = 2 * tf.eye(2, dtype=tf.float32) 
X_inv = tf.matrix_inverse(X) 
X_solve = tf.matrix_solve(X, I) 
X_chol_solve = tf.cholesky_solve(tf.cholesky(X), I) 

with tf.Session() as sess: 
    for x in [X_inv, X_solve, X_chol_solve]: 
     print('{}:\n{}'.format(x.name, sess.run(x))) 
     print 

產生輸出:

MatrixInverse:0: 
[[ 0.5 0. ] 
[ 0. 0.5]] 

MatrixSolve:0: 
[[ 0.5 0. ] 
[ 0. 0.5]] 

cholesky_solve/MatrixTriangularSolve_1:0: 
[[ 1. 0.] 
[ 0. 1.]] 


Process finished with exit code 0 
+0

我回答了你的問題嗎? – MaxB

回答

1

我認爲這是一個錯誤。請注意結果如何不取決於RHS,除非RHS = 0,在這種情況下,您得到nan而不是0。請在GitHub上報告。