使用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标准日志模块logging的使用方法
Nov 01 Python
Python实现包含min函数的栈
Apr 29 Python
Python中Scrapy爬虫图片处理详解
Nov 29 Python
Python中将变量按行写入txt文本中的方法
Apr 03 Python
python找出完数的方法
Nov 12 Python
pandas 如何分割字符的实现方法
Jul 29 Python
Flask框架学习笔记之模板操作实例详解
Aug 15 Python
python图形界面开发之wxPython树控件使用方法详解
Feb 24 Python
PyTorch-GPU加速实例
Jun 23 Python
jupyter notebook快速入门及使用详解
Nov 13 Python
python模拟点击玩游戏的实例讲解
Nov 26 Python
Python OpenCV快速入门教程
Apr 17 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高手?学会“懒惰”的编程
2006/12/05 PHP
PHP syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
JavaScript CSS 修改学习第四章 透明度设置
2010/02/19 Javascript
Jquery UI震动效果实现原理及步骤
2013/02/04 Javascript
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
jquery图片切换实例分析
2015/04/15 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
微信小程序返回多级页面的实现方法
2017/10/27 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
通过JS判断网页是否为手机打开
2020/10/28 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
Python 的 Socket 编程
2015/03/24 Python
Python网络爬虫实例讲解
2016/04/28 Python
windows下python安装小白入门教程
2018/09/18 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
基于python全局设置id 自动化测试元素定位过程解析
2019/09/04 Python
python中web框架的自定义创建
2019/09/08 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
matlab中二维插值函数interp2的使用详解
2020/04/22 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
Perfume’s Club法国站:购买香水和化妆品
2019/05/02 全球购物
司机辞职报告范文
2014/01/20 职场文书
小学二年级评语
2014/04/21 职场文书
公安交警个人对照检查材料思想汇报
2014/10/01 职场文书
小学生手册家长意见
2015/06/03 职场文书
2015年支教教师工作总结
2015/07/22 职场文书
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python
Java实现简易的分词器功能
2021/06/15 Java/Android
opencv深入浅出了解机器学习和深度学习
2022/03/17 Python