使用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 相关文章推荐
itchat接口使用示例
Oct 23 Python
python中字符串比较使用is、==和cmp()总结
Mar 18 Python
对PyTorch torch.stack的实例讲解
Jul 30 Python
python write无法写入文件的解决方法
Jan 23 Python
浅谈python的深浅拷贝以及fromkeys的用法
Mar 08 Python
pandas的连接函数concat()函数的具体使用方法
Jul 09 Python
Python实现一个带权无回置随机抽选函数的方法
Jul 24 Python
手把手教你pycharm专业版安装破解教程(linux版)
Sep 26 Python
使用Tensorflow实现可视化中间层和卷积层
Jan 24 Python
如何提高python 中for循环的效率
Apr 15 Python
python操作微信自动发消息的实现(微信聊天机器人)
Jul 14 Python
python开发制作好看的时钟效果
May 02 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
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
PHP魔术引号所带来的安全问题分析
2014/07/15 PHP
php上传图片获取路径及给表单字段赋值的方法
2016/01/23 PHP
PHP 数组遍历foreach语法结构及实例
2016/06/13 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
Javascript实现的分页函数
2007/02/07 Javascript
Json序列化和反序列化方法解析
2013/12/19 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
Bootstrap面板学习使用
2017/02/09 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
vue实现文章内容过长点击阅读全文功能的实例
2017/12/28 Javascript
了解javascript中变量及函数的提升
2019/05/27 Javascript
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
vuex actions异步修改状态的实例详解
2019/11/06 Javascript
AJAX XMLHttpRequest对象创建使用详解
2020/08/20 Javascript
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
python分割列表(list)的方法示例
2017/05/07 Python
Python正则表达式匹配数字和小数的方法
2019/07/03 Python
python cv2在验证码识别中应用实例解析
2019/12/25 Python
python使用python-pptx删除ppt某页实例
2020/02/14 Python
HTML5移动开发图片压缩上传功能
2016/11/09 HTML / CSS
详解Canvas 跨域脱坑实践
2018/11/07 HTML / CSS
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
关于母亲节的感言
2014/02/04 职场文书
1000字打架检讨书
2014/11/03 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
学习保证书
2015/01/17 职场文书
教你如何用python开发一款数字推盘小游戏
2021/04/14 Python
如何正确理解python装饰器
2021/06/15 Python
利用Python实现Picgo图床工具
2021/11/23 Python