使用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二叉树的实现实例
Nov 21 Python
Python中的Numeric包和Numarray包使用教程
Apr 13 Python
python获取外网ip地址的方法总结
Jul 02 Python
Python爬取三国演义的实现方法
Sep 12 Python
django中send_mail功能实现详解
Feb 06 Python
python将txt文件读入为np.array的方法
Oct 30 Python
Django组件cookie与session的具体使用
Jun 05 Python
简单了解python 邮件模块的使用方法
Jul 24 Python
pycharm 批量修改变量名称的方法
Aug 01 Python
python opencv调用笔记本摄像头
Aug 28 Python
pygame实现贪吃蛇游戏(上)
Oct 29 Python
Python基于paramunittest模块实现excl参数化
Apr 26 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
全国FM电台频率大全 - 1 北京市
2020/03/11 无线电
PHP的面向对象编程
2006/10/09 PHP
jQuery学习笔记之jQuery的事件
2010/12/22 Javascript
表单元素的submit()方法和onsubmit事件应用概述
2013/02/01 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
js实现div层缓慢收缩与展开的方法
2015/05/11 Javascript
js实现发送验证码后的倒计时功能
2015/05/28 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
js简单实现调整网页字体大小的方法
2016/07/23 Javascript
JavaScript如何实现跨域请求
2016/08/05 Javascript
jQuery将表单序列化成一个Object对象的实例
2016/11/29 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
对vue.js中this.$emit的深入理解
2018/02/23 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
Element input树型下拉框的实现代码
2018/12/21 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
关于vue属性使用和不使用冒号的区别说明
2020/10/22 Javascript
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
Django框架中数据的连锁查询和限制返回数据的方法
2015/07/17 Python
Tornado 多进程实现分析详解
2018/01/12 Python
Python简单实现网页内容抓取功能示例
2018/06/07 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
浅析python参数的知识点
2018/12/10 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
python实现126邮箱发送邮件
2020/05/20 Python
Django之腾讯云短信的实现
2020/06/12 Python
HTML5 embed标签定义和用法详解
2014/05/09 HTML / CSS
HTML5离线应用与客户端存储的实现
2018/05/03 HTML / CSS
高级3D打印市场:Gambody
2019/12/26 全球购物
特色蛋糕店创业计划书
2014/01/28 职场文书
企业精神口号
2014/06/11 职场文书
2014红色之旅心得体会
2014/10/07 职场文书
文明倡议书
2015/01/19 职场文书
公司行政助理岗位职责
2015/04/11 职场文书
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记
Go gorilla securecookie库的安装使用详解
2022/08/14 Golang