采用最小二乘的求逆方法在大部分情况下是低效率的。特别地,当局镇非常大时效率更低。另外一种实现方法是矩阵分解,此方法使用tensorflow内建的柯列斯基矩阵分解法.Cholesky矩阵分解法把一个矩阵分解为上三角矩阵和下三角矩阵,L和L’。求解Ax=b,改写成LL '=b。首先求解=b,然后求解L 'x=y得到系数矩阵。
<强> 1。导入编程库,初始化计算图,生成数据集。接着获取矩阵A和b。强>
在在在进口matplotlib。pyplot作为plt 在在在进口numpy np 在在在进口tensorflow特遣部队 在在在从tensorflow.python.framework进口操作 在在在ops.reset_default_graph () 在在在税=tf.Session () 在在在x_vals=np.linspace (0, 10100) 在在在y_vals=x_vals + np.random.normal (0, 1100) 在在在x_vals_column=np.transpose (np.matrix (x_vals)) 在祝辞祝辞> 在在在tA_A=tf.matmul (tf.transpose (A_tensor) A_tensor) 在在在L=tf.cholesky (tA_A) 在在在tA_b=tf.matmul (tf.transpose (A_tensor), b) 在在在tA_b sol1=tf.matrix_solve(左) 在在在sol2=tf.matrix_solve (tf.transpose (L), sol1) >之前<强> 3。抽取系数强>
在在在solution_eval=sess.run (sol2) 在在在solution_eval 阵列([[1.01379067], [0.02290901]]) 在在在斜率=solution_eval [0] [0] 在在在y_intercept=solution_eval [1] [0] 在在在print(斜率:' + str(斜率)) 坡:1.0137906744047482 在在在打印(' y_intercept: ' + str (y_intercept)) y_intercept: 0.022909011828880693 在在在best_fit=[] 在在在因为我在x_vals: …我+ y_intercept best_fit.append斜率(*) … 在在在plt.plot (x_vals y_vals、“o”标签=笆荨? [& lt; matplotlib.lines。在0 x000001e0a58dd9b0> Line2D对象;】 在在在plt。情节(x_vals best_fit, r -,标签=最适合线,线宽=3) [& lt; matplotlib.lines。在0 x000001e0a2dfaf98> Line2D对象;】 在在在plt。传奇(loc=白笊稀? & lt; matplotlib.legend。传说在0 x000001e0a58f03c8>对象; 在在在plt.show () >之前
以上这篇使用tensorflow实现矩阵分解方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
使用tensorflow实现矩阵分解方式