使用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基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
python实现用户登录系统
May 21 Python
详解python中的json的基本使用方法
Dec 21 Python
Python实现文件内容批量追加的方法示例
Aug 29 Python
使用django-crontab实现定时任务的示例
Feb 26 Python
pandas带有重复索引操作方法
Jun 08 Python
详解如何在Apache中运行Python WSGI应用
Jan 02 Python
python根据txt文本批量创建文件夹
Dec 08 Python
pyQT5 实现窗体之间传值的示例
Jun 20 Python
Python使用eval函数执行动态标表达式过程详解
Oct 17 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
Mar 04 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下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
php+xml实现在线英文词典查询的方法
2015/01/23 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
PHP序列化/对象注入漏洞分析
2016/04/18 PHP
php字符串操作针对负值的判断分析
2016/07/28 PHP
Js callBack 返回前一页的js方法
2008/11/30 Javascript
FileUpload 控件 禁止手动输入或粘贴的实现代码
2010/04/07 Javascript
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
JavaScript中的字符串操作详解
2013/11/12 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
JS中类或对象的定义说明
2014/03/10 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
JS和JQ的event对象区别分析
2014/11/24 Javascript
js实现图片淡入淡出切换简易效果
2016/08/22 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
2016/10/19 Javascript
Node.js 中exports 和 module.exports 的区别
2017/03/14 Javascript
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
vue checkbox 全选 数据的绑定及获取和计算方法
2018/02/09 Javascript
纯js封装的ajax功能函数与用法示例
2018/05/14 Javascript
详解如何在Vue里建立长按指令
2018/08/20 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
Python的Django框架下管理站点的基本方法
2015/07/17 Python
python GUI实例学习
2017/11/21 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
pycharm运行和调试不显示结果的解决方法
2018/11/30 Python
Django中多种重定向方法使用详解
2019/07/17 Python
pycharm激活码快速激活及使用步骤
2020/03/12 Python
介绍一下mysql的日期和时间函数
2013/03/28 面试题
普通简短的个人自我评价
2014/02/15 职场文书
小学生爱国演讲稿
2014/04/25 职场文书
精神文明建设先进工作者事迹材料
2014/05/02 职场文书
药店营业员岗位职责
2015/04/14 职场文书
2015年财务经理工作总结
2015/05/13 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
Django REST framework 限流功能的使用
2021/06/24 Python
【海涛DOTA解说】EVE女子战队独家录像加ZSMJ神牛两连发
2022/04/01 DOTA