使用tensorflow实现矩阵分解方式

 更新时间:2020年02月07日 11:53:50   作者:张荣华_csdn  
今天小编就为大家分享一篇使用tensorflow实现矩阵分解方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

采用最小二乘的求逆方法在大部分情况下是低效率的。特别地,当局镇非常大时效率更低。另外一种实现方法是矩阵分解,此方法使用tensorflow内建的Cholesky矩阵分解法。Cholesky矩阵分解法把一个矩阵分解为上三角矩阵和下三角矩阵,L和L'。求解Ax=b,改写成LL'=b。首先求解Ly=b,然后求解L'x=y得到系数矩阵。

1. 导入编程库,初始化计算图,生成数据集。接着获取矩阵A和b。

>>> import matplotlib.pyplot as plt
>>> import numpy as np

>>> import tensorflow as tf

>>> from tensorflow.python.framework import ops
>>> ops.reset_default_graph()

>>> sess=tf.Session()

>>> x_vals=np.linspace(0,10,100)

>>> y_vals=x_vals+np.random.normal(0,1,100)

>>> x_vals_column=np.transpose(np.matrix(x_vals))
>>> ones_column=np.transpose(np.matrix(np.repeat(1,100)))
>>> A=np.column_stack((x_vals_column,ones_column))
>>> b=np.transpose(np.matrix(y_vals))
>>> A_tensor=tf.constant(A)

>>> b_tensor=tf.constant(b)

2. 找到方阵的Cholesky矩阵分解。

注意:tensorflow的cholesky()函数仅仅返回矩阵分解的下三角矩阵,因为上三角矩阵是下三角矩阵的转置矩阵。

>>> tA_A=tf.matmul(tf.transpose(A_tensor),A_tensor)
>>> L=tf.cholesky(tA_A)
>>> tA_b=tf.matmul(tf.transpose(A_tensor),b)
>>> sol1=tf.matrix_solve(L,tA_b)

>>> sol2=tf.matrix_solve(tf.transpose(L),sol1)

3. 抽取系数

>>> solution_eval=sess.run(sol2)
>>> solution_eval
array([[1.01379067],
    [0.02290901]])
>>> slope=solution_eval[0][0]
>>> y_intercept=solution_eval[1][0]
>>> print('slope:'+str(slope))
slope:1.0137906744047482
>>> print('y_intercept:'+str(y_intercept))
y_intercept:0.022909011828880693
>>> best_fit=[]
>>> for i in x_vals:
...  best_fit.append(slope*i+y_intercept)
...
>>> plt.plot(x_vals,y_vals,'o',label='Data')
[<matplotlib.lines.Line2D object at 0x000001E0A58DD9B0>]
>>> plt.plot(x_vals,best_fit,'r-',label='Best fit line',linewidth=3)
[<matplotlib.lines.Line2D object at 0x000001E0A2DFAF98>]
>>> plt.legend(loc='upper left')
<matplotlib.legend.Legend object at 0x000001E0A58F03C8>

>>> plt.show()

以上这篇使用tensorflow实现矩阵分解方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用python matplotlib 画图导入到word中如何保证分辨率

    使用python matplotlib 画图导入到word中如何保证分辨率

    这篇文章主要介绍了使用python matplotlib 画图导入到word中如何保证分辨率的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • python函数指定默认值的实例讲解

    python函数指定默认值的实例讲解

    在本篇内容里小编给大家整理了一篇关于python函数指定默认值的实例讲解内容,有需要的朋友们可以跟着学习参考下。
    2021-03-03
  • python暴力解压rar加密文件过程详解

    python暴力解压rar加密文件过程详解

    这篇文章主要介绍了python解压rar加密文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • python 包之 APScheduler 定时任务

    python 包之 APScheduler 定时任务

    这篇文章主要介绍了python 包之 APScheduler 定时任务,文章基于python的相关资料展开主题内容,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-04-04
  • linux安装python修改默认python版本方法

    linux安装python修改默认python版本方法

    在本文中我们给大家总结了关于linux安装python修改默认python版本的方法和相关知识点,需要的读者们参考下。
    2019-03-03
  • 详解python数据结构之队列Queue

    详解python数据结构之队列Queue

    这篇文章主要介绍了python数据结构之队列Queue,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-05-05
  • Python NumPy矩阵对象详解及方法

    Python NumPy矩阵对象详解及方法

    这篇文章主要介绍了Python NumPy矩阵对象详解及方法,文章围绕主题展开详细的内容戒杀,具有一定的参考价值,需要的朋友可以参考一下
    2022-09-09
  • python自动化测试工具Helium使用示例

    python自动化测试工具Helium使用示例

    大家好,本篇文章主要讲的是python自动化测试工具Helium使用示例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下哦
    2021-12-12
  • Python实现求一个集合所有子集的示例

    Python实现求一个集合所有子集的示例

    今天小编就为大家分享一篇Python 实现求一个集合所有子集的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • python实现多线程端口扫描

    python实现多线程端口扫描

    这篇文章主要为大家详细介绍了python实现多线程端口扫描,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08

最新评论