使用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的Tornado框架异步编程入门实例
Apr 24 Python
Python中的zipfile模块使用详解
Jun 25 Python
Python自动化开发学习之三级菜单制作
Jul 14 Python
解决python读取几千万行的大表内存问题
Jun 26 Python
在Python中构建增广矩阵的实现方法
Jul 01 Python
Python中拆分字符串的操作方法
Jul 23 Python
python中return的返回和执行实例
Dec 24 Python
Python While循环语句实例演示及原理解析
Jan 03 Python
python中resample函数实现重采样和降采样代码
Feb 25 Python
Tensorflow之MNIST CNN实现并保存、加载模型
Jun 17 Python
Python selenium键盘鼠标事件实现过程详解
Jul 28 Python
Python-OpenCV实现图像缺陷检测的实例
Jun 11 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
咖啡的化学
2021/03/03 咖啡文化
php email邮箱正则
2008/10/08 PHP
php 安全过滤函数代码
2011/05/07 PHP
总结AJAX相关JS代码片段和浏览器模型
2007/08/15 Javascript
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
2015/02/17 Javascript
用JavaScript实现对话框的教程
2015/06/04 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
Three.js学习之几何形状
2016/08/01 Javascript
浅谈jQuery框架Ajax常用选项
2017/07/08 jQuery
web前端开发中常见的多列布局解决方案整理(一定要看)
2017/10/15 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
vue2.0基于vue-cli+element-ui制作树形treeTable
2019/04/30 Javascript
深入理解JS异步编程-Promise
2019/06/03 Javascript
ES6的循环与可迭代对象示例详解
2021/01/31 Javascript
Python实现处理管道的方法
2015/06/04 Python
全面了解Python环境配置及项目建立
2016/06/30 Python
Python探索之SocketServer详解
2017/10/28 Python
flask中过滤器的使用详解
2018/08/01 Python
用django设置session过期时间的方法解析
2019/08/05 Python
python中的线程threading.Thread()使用详解
2019/12/17 Python
Python如何自动获取目标网站最新通知
2020/06/18 Python
CSS3 圆角效果
2009/07/15 HTML / CSS
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
HTML5跳转小程序wx-open-launch-weapp的示例代码
2020/07/16 HTML / CSS
入党申请自荐书范文
2014/02/11 职场文书
个人函授自我鉴定
2014/03/25 职场文书
我的老师教学反思
2014/05/01 职场文书
效能监察建议书
2014/05/19 职场文书
企业承诺书怎么写
2014/05/24 职场文书
教师工作失职检讨书
2014/09/18 职场文书
区域经理岗位职责
2015/02/02 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
ubuntu端向日葵键盘输入卡顿问题及解决
2022/12/24 Servers