使用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 相关文章推荐
Python2与python3中 for 循环语句基础与实例分析
Nov 20 Python
对python 操作solr索引数据的实例详解
Dec 07 Python
pandas每次多Sheet写入文件的方法
Dec 10 Python
python根据url地址下载小文件的实例
Dec 18 Python
PyTorch搭建多项式回归模型(三)
May 22 Python
python变量的存储原理详解
Jul 10 Python
Python的条件锁与事件共享详解
Sep 12 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
python支持多线程的爬虫实例
Dec 21 Python
Python使用pycharm导入pymysql教程
Sep 16 Python
在Pycharm中安装Pandas库方法(简单易懂)
Feb 20 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
Mar 25 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
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
php中simplexml_load_file函数用法实例
2014/11/12 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
List Information About the Binary Files Used by an Application
2007/06/18 Javascript
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
图片翻转效果具体实现代码
2014/01/09 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
全面了解js中的script标签
2016/07/04 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
使用canvas进行图像编辑的实例
2017/08/29 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
2019/12/16 Javascript
JavaScript undefined及null区别实例解析
2020/07/21 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
Python编程中对文件和存储器的读写示例
2016/01/25 Python
python实现人民币大写转换
2018/06/20 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
python list多级排序知识点总结
2019/10/23 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
2020/03/23 Python
Python如何根据时间序列数据作图
2020/05/12 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
银行毕业实习自我鉴定
2013/09/19 职场文书
历史专业毕业生的自我鉴定
2013/11/15 职场文书
学生党支部先进事迹
2014/02/04 职场文书
学生生病请假条范文
2014/02/16 职场文书
平面设计专业大学生职业规划书
2014/03/12 职场文书
基层党员对照检查材料
2014/08/25 职场文书
运动会跳远广播稿5篇
2014/09/17 职场文书
婚育证明格式
2015/06/17 职场文书
python Tkinter模块使用方法详解
2022/04/07 Python