使用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脚本来控制Windows Azure的简单教程
Apr 16 Python
Python实现栈的方法
May 26 Python
通过mod_python配置运行在Apache上的Django框架
Jul 22 Python
让Python更加充分的使用Sqlite3
Dec 11 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
May 15 Python
Python输出指定字符串的方法
Feb 06 Python
python numpy生成等差数列、等比数列的实例
Feb 25 Python
使用Python发现隐藏的wifi
Mar 04 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
Apr 16 Python
Python小白不正确的使用类变量实例
May 29 Python
python 通过 pybind11 使用Eigen加速代码的步骤
Dec 07 Python
利用python+request通过接口实现人员通行记录上传功能
Jan 13 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
福利彩票幸运号码自动生成器
2006/10/09 PHP
php中运用http调用的GET和POST方法示例
2014/09/29 PHP
js png图片(有含有透明)在IE6中为什么不透明了
2010/02/07 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
JavaScrip调试技巧之断点调试
2015/10/22 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
基于Bootstrap使用jQuery实现输入框组input-group的添加与删除
2016/05/03 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
Angular2安装angular-cli
2017/05/21 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
基于LayUI分页和LayUI laypage分页的使用示例
2017/08/02 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
原生js调用json方法总结
2018/02/22 Javascript
JavaScript如何对图片进行黑白化
2018/04/10 Javascript
vue-devtools的安装步骤
2018/04/23 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
vue根据值给予不同class的实例
2018/09/29 Javascript
ng-repeat指令在迭代对象时的去重方法
2018/10/02 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
Jquery 获取相同NAME 或者id删除行操作
2020/08/24 jQuery
详解Python中的__new__、__init__、__call__三个特殊方法
2016/06/02 Python
python自带的http模块详解
2016/11/06 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
2020/04/22 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
python excel多行合并的方法
2020/12/09 Python
html5 postMessage前端跨域并前端监听的方法示例
2018/11/01 HTML / CSS
Zipadee-Zip襁褓过渡毯:Sleeping Baby
2018/12/30 全球购物
牵手50新加坡:专为黄金岁月的单身人士而设的交友网站
2020/08/16 全球购物
见习期自我鉴定
2014/01/31 职场文书
会计专业毕业生自荐书
2014/06/25 职场文书
乡党政领导班子群众路线教育实践活动个人对照检查材料
2014/09/20 职场文书
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
2021/04/01 PHP
python 中的jieba分词库
2021/11/23 Python
Golang 结构体数据集合
2022/04/22 Golang