使用tensorflow实现矩阵分解方式


Posted in Python onFebruary 07, 2020

采用最小二乘的求逆方法在大部分情况下是低效率的。特别地,当局镇非常大时效率更低。另外一种实现方法是矩阵分解,此方法使用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实现矩阵分解方式

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

Python 相关文章推荐
Python实现的一个简单LRU cache
Sep 26 Python
简单介绍Ruby中的CGI编程
Apr 10 Python
Python下的subprocess模块的入门指引
Apr 16 Python
简单介绍Python的Django框架的dj-scaffold项目
May 30 Python
Python中的一些陷阱与技巧小结
Jul 10 Python
分析并输出Python代码依赖的库的实现代码
Aug 09 Python
python僵尸进程产生的原因
Jul 21 Python
python实现的config文件读写功能示例
Sep 24 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
Sep 17 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
Apr 10 Python
Python使用Kubernetes API访问集群
May 30 Python
基于Python实现股票收益率分析
Apr 02 Python
python匿名函数lambda原理及实例解析
Feb 07 #Python
Python用input输入列表的实例代码
Feb 07 #Python
详解Python 重学requests发起请求的基本方式
Feb 07 #Python
对tensorflow 中tile函数的使用详解
Feb 07 #Python
TensorFlow2.0矩阵与向量的加减乘实例
Feb 07 #Python
Tensorflow分批量读取数据教程
Feb 07 #Python
python统计字符的个数代码实例
Feb 07 #Python
You might like
S900/ ETON E1-XM 收音机
2021/03/02 无线电
第八节--访问方式
2006/11/16 PHP
PHP实现MVC开发得最简单的方法――模型
2007/04/10 PHP
php数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数
2011/10/29 PHP
php连接odbc数据源并保存与查询数据的方法
2014/12/24 PHP
php四种定界符详解
2017/02/16 PHP
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
45个JavaScript编程注意事项、技巧大全
2015/02/11 Javascript
jQuery中delegate()方法的用法详解
2016/10/13 Javascript
json的结构与遍历方法实例分析
2017/04/25 Javascript
微信小程序slider组件使用详解
2018/01/31 Javascript
Vue常用指令详解分析
2018/08/19 Javascript
微信小程序实现页面浮动导航
2019/01/28 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
2019/02/02 Javascript
小程序根据手机机型设置自定义底部导航距离
2019/06/04 Javascript
ionic3双击返回退出应用的方法
2019/09/17 Javascript
详解vue父子组件状态同步的最佳方式
2020/09/10 Javascript
Python MySQLdb Linux下安装笔记
2015/05/09 Python
在Python中操作列表之list.extend()方法的使用
2015/05/20 Python
Python 登录网站详解及实例
2017/04/11 Python
python编程实现希尔排序
2017/04/13 Python
基于python内置函数与匿名函数详解
2018/01/09 Python
python中的变量如何开辟内存
2018/06/26 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
在Pycharm中设置默认自动换行的方法
2019/01/16 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
解决Djang2.0.1中的reverse导入失败的问题
2019/08/16 Python
Python数据分析库pandas高级接口dt的使用详解
2020/12/11 Python
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
英国奢华护肤、美容和Spa品牌:Temple Spa
2019/11/02 全球购物
三年大学生活自我鉴定
2014/01/21 职场文书
师范生自荐信模板
2014/05/28 职场文书
学雷锋日活动总结
2015/02/06 职场文书
centos8安装MongoDB的详细过程
2021/10/24 MongoDB
mysql查询结果实现多列拼接查询
2022/04/03 MySQL