矩阵乘法

1.创建会话,启动会话

我们两清 提交于 2019-11-30 16:57:45
import tensorflow as tf # 创建一个常量 m1 = tf.constant([[3,3]]) # 创建一个常量 m2 = tf.constant([[2],[3]]) # 矩阵乘法op product = tf.matmul(m1, m2) print(product) # 定义会话 sess = tf.Session() # 调用sess中的run方法来执行矩阵乘法op result = sess.run(product) print(result) sess.close() with tf.Session() as sess: # 调用sess中的run方法来执行矩阵乘法op result = sess.run(product) print(result) 来源: https://www.cnblogs.com/liuwenhua/p/11605287.html

python中矩阵的基本运算学习记录

半世苍凉 提交于 2019-11-30 13:52:04
矩阵运算: NumPy 系统是 Python 的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比 Python 自身的嵌套列表( nested list structure) 结构要高效的多(该结构也可以用来表示矩阵( matrix )) import numpy as np from numpy.linalg import * // 矩阵运算 行列式: a=np.mat([[1,23,3],[1,6,4],[13,12,14]]) a_det=det(a) 求逆: a_inv=a.I 伴随矩阵: a_adju=a_det*a_inv 求两个数的最大公因数: def gcd(a,b): while a!=0: a,b = b%a,a return b 求a模m的逆: def exgcd(a,m): if gcd(a,m)!=1: return None u1,u2,u3 = 1,0,a v1,v2,v3 = 0,1,m while v3!=0: q = u3//v3 v1,v2,v3,u1,u2,u3 = (u1-q*v1),(u2-q*v2),(u3-q*v3),v1,v2,v3 return u1%m 乘法: C=a*b 加法: C=a+b 转置: a_tra=a.T 来源: CSDN 作者: Baron_wu 链接: https://blog.csdn.net

为什么会有矩阵这东西,矩阵到底有什么用

亡梦爱人 提交于 2019-11-30 13:19:02
在《线性代数》书中, 行列式 和 矩阵 总是如影随行,而且两个确实长得很相似,所以也经常有人混淆两者。 矩阵:有勾必火 行列式: 是指将一些数据建立成 计算方阵 ,经过 规定的计算方法最终得到 一个数 。换句话说, 行列式代表的是一个值 。 而 矩阵 则不同,矩阵表示的是一个 数表,是一个数据的集合体 。换句话说,矩阵更神似于一张n行m列的数字表格,或者Excel表。 最近这几天,京西旅馆的大厨还没到位,采购蔬菜的事情还是落在了小天的身上。 这不,精打细算(抠门)的刘强西就派小天到 村头菜市场 、 村尾王大妈菜摊 和 隔壁村老王农场 去调研不同菜品的价格,说是不能乱花一分钱。。。 小天分别去三个地方分别调研了三种菜品,发现价格真有不同。。。 而之后小天便将得到的数据用矩阵表示出来。 刘强西看到小天提供的矩阵:这是什么鬼,小天,你干嘛用矩阵来表示呀?! 小天:因为矩阵也是一种 表示多维度数据的方式 呀! 刘强西:但这个比Excel表难看,不喜欢,而且没什么用。 小天此时露出鄙夷的眼光:刘boss,你竟然说矩阵没什么用(这个也不怪你,就是现在还有人说数学没什么用),其实之所以做成矩阵的形式,就为了四个字: 便于计算 。 我记得上一次你还跟我说过三种蔬菜的需求量,那我们将需求量做成 需求矩阵B : 那我们就可以得到三个地方的价格( 价格矩阵C ): 如何知道矩阵乘法的本质是什么?

矩阵几何意义

亡梦爱人 提交于 2019-11-30 13:14:52
实数组的几何意义:(a,b)和(a,b,c)分别代表平面和三维空间上的一个点 矩阵的几何意义:在线性空间中,如果确定了一个基,线性映射就可以用确定的矩阵表示。 即线性空间上的线性映射。 矩阵 独立的几何意义表现为对向量作用的结果。 矩阵对 一个向量 是如何作用的? 矩阵对 多个向量 是如何作用的? 矩阵对 几何图形 (由 无数个向量 组成的几何图形)是如何作用的? 在矩阵对一个几何图形的作用的研究中,我们会发现 一些规律 ,如 特征向量 、 秩 等等。 矩阵方程Ax=b和对应的向量方程xa(下标为1)+……+xa(下标为2)之间的差别仅仅是记号上的不同。 通常的情况是,把矩阵A当作一种“对象”,她通过乘法,“作用”于向量x,产生的新向量称为Ax。 深入理解 定义域,值域 定义域,值域 矩阵作为向量变换的动态观念 剪切变换 线性变换 信号系统中的应用 旋转变换 线性变换(矩阵是如何工作的?) 一直都搞不清楚,矩阵是怎么样将一个向量,变换到 另一个向量的!! 任何 矩阵具体的变换方式 ,是 相对于 上面的单位正方形 来工作的 。(即二维的,若是三维的,则是单位正方体……现在,矩阵的变换作用一切变得可以 理解了!) 可以理解,为什么一般矩阵要简化成 上三角 or 下三角形。 矩阵乘法对应线性变换的复合。 矩阵乘法: 矩阵乘法,左右顺序必须保持不变 一般来说,AB和BA是不同的.

矩阵乘法,左逆,右逆的意义

余生长醉 提交于 2019-11-30 13:14:14
1 先考虑矩阵和向量相乘的情况: 在矩阵学习的博文中,提到 这样,对于Ax=y,其中,A是m*n的矩阵,x是n维向量,y是m维向量。讨论三种情况: (1)m=n, x->y的映射是从n维到n维(伸缩旋转等) (2)m<n, x->y的映射是从高维n到低维m(投影等) (3)m>n x->y的映射是从低维n'到高维n(这在核方法中提到,企图使数据在高维中线性分割等) 2 矩阵和矩阵相乘 矩阵相乘,A*B,其中,A是m*n矩阵,B是n*p矩阵,可以将B视为p个n维向量,A独自分别和这p个向量相乘。 3 左逆 来源: CSDN 作者: 一动不动的葱头 链接: https://blog.csdn.net/Wanggcong/article/details/43538613

一个C++的矩阵运算库

99封情书 提交于 2019-11-30 13:12:46
Armadillo:C++下的Matlab替代品 Eigen3:强大且只需头文件 OpenCV:方便的计算机视觉计算库 ViennaCL:并行矩阵计算 PETSc:大规模并行科学计算 其他的矩阵计算库和资料 最近在几个地方都看到有人问C++下用什么矩阵运算库比较好,顺便做了个调查,做一些相关的推荐吧。主要针对稠密矩阵,有时间会再写一个稀疏矩阵的推荐。欢迎关注我的独立博客: http://cvnote.info/ 。另外新开了个新浪微博@cvnote求关注!啊!!! Armadillo:C++下的Matlab替代品 地址: http://arma.sourceforge.net/ 许可证:MPL 2.0 目前使用比较广的C++矩阵运算库之一,是在C++下使用Matlab方式操作矩阵很好的选择,许多Matlab的矩阵操作函数都可以找到对应,这对习惯了Matlab的人来说实在是非常方便,另外如果要将Matlab下做研究的代码改写成C++,使用Armadillo也会很方便,这里有一个简易的Matlab到Armadillo的语法转换。下面列了一些Armadillo的特性: 支持整数,浮点数,和复数矩阵。 支持矩阵逐元素操作,包括abs · conj · conv_to · eps · imag/real · misc functions (exp, log, pow, sqrt, round

矩阵优化DP类问题应用向小结

梦想与她 提交于 2019-11-30 12:57:45
前言 本篇强调 应用 ,矩阵的基本知识有所省略(也许会写篇基础向。。。)。 思想及原理 为什么Oier们能够想到用矩阵来加速DP呢?做了一些DP题之后,我们会发现,有时候DP两两状态之间的转移是 定向 的,也就是说,在DP转移的所有阶段中,对于一个固定的状态 \(f_i\) ,它只能转移到一个不变的状态集合 \(\{F_i\}\) 中,我们转移的方向不会因为阶段的改变而改变。 好,提炼关键信息,我们需要状态的转移,且状态转移的方式不变(不排除某些毒瘤题),并且对于大多数转移,无非就是各个状态之间的带系数运算。当需要转移的次数过多并且状态数较小时,我们就可以考虑用矩阵快速幂来优化转移。 矩阵快速幂的原理及实现就当前置芝士了吧,略略略~ 当然,如果你需要用矩阵来优化DP,首先你还是得先推出朴素的DP式子,然后观察DP式子各个状态之间的关系,然后构造一个符合状态转移的矩阵,然后就可以快速幂了。 常用套路 模板化 ,比如用struct封装matrix;个人倾向于把构造的转移矩阵放左边XD。 猜想矩阵加速 ,对着数据范围YY应该是每个oier都应有的能力。。。 自定义矩阵乘法 ,我们需要知道对于特定的状态转移,只要它满足 广义矩阵乘法 的基本性质,我们同样可以用矩阵来加速,下面有道例题就是这样。 预处理掉不合法的转移 ,蒟蒻做的矩阵优化题有一半都与状压有关,,

Python与线性代数基本概念

牧云@^-^@ 提交于 2019-11-30 08:15:26
在Python中使用Numpy创建向量: x = np.array([1, 2, 3, 4]) 创建3 x 3矩阵 B = np.array([[1, 2],[3, 4],[5, 6]]) Shape形状,也可称为维度,表示矩阵中每个维度的具体数值; B.shape 3 x 2 转置 行向量可转置为列向量,列向量转置为行向量 如为方阵转置后行数列数不变,对于非方阵,2 x 3矩阵转置后为3 x 2矩阵 B_t = A.T 检查转置后形状shape B_t.shape 矩阵加法 矩阵相加为两个矩阵对应的元素相加; A = np.array([1,2],[3,4]) B = np.array([4,5],[5,6]) C = A + B = [[5, 7],[8, 10]] 如标量与矩阵相加规则为:标量与矩阵中对应的每个元素相加; 广播   广播为Numpy的机制,使得Numpy可以处理各个不同形状(shape)之间的操作,较小的阵列将会被扩充以匹配较大的阵列形状;   就如上面使用标量与矩阵做相加元素,实际上Numpy把标量转成了与矩阵相同维度的矩阵与该矩阵进行相加;   比如一个3 x 2 矩阵与一个3 x 1矩阵相加,Numpy会自动把3 x 1矩阵复制一列形成3 x2矩阵与该3 x 2矩阵相加,使得两个矩阵的shape能够匹配; 矩阵乘法   矩阵乘法与矩阵加法规则并不一样

算法设计与分析——矩阵连乘问题

狂风中的少年 提交于 2019-11-30 05:49:36
问题描述: 给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。例如,给定三个连乘矩阵{A1,A2,A3}的维数分别是10*100,100*5和5*50,采用(A1A2)A3,乘法次数为10*100*5+10*5*50=7500次,而采用A1(A2A3),乘法次数为100*5*50+10*100*50=75000次乘法,显然,最好的次序是(A1A2)A3,乘法次数为7500次。 加括号的方式对计算量有很大的影响,于是自然地提出矩阵连乘的最优计算次序问题,即对于给定的相继n个矩阵,如何确定矩阵连乘的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。 问题分析: 矩阵连乘也是Catalan数的一个常用的例子,关于时间复杂度的推算需要参考离散数学关于Catalan的内容。 下面考虑使用动态规划法解矩阵连乘积的最优计算次序问题。 1、分析最优解的结构 问题的最优子结构性质是该问题可以用动态规划求解的显著特征!!! 2、建立递归关系 来源: https://www.cnblogs.com/wkfvawl/p/11564275.html

数据科学库-day1

北慕城南 提交于 2019-11-30 04:37:14
1 创建矩阵 ① 通过列表创建矩阵: array=np.array([[1,2],[3,4]]),创建的同时可以通过 dtype设置格式,如 array=np.array([[1,2],[3,4]],dtype=np.int32) ② 通过 numpy自带函数: array=np.zeros((2,2)),array=np.random.random((2,2)) ③ np.arange(10) ④ array=np.arange(12).reshape(3,4) ⑤ 生成线段: a=np.linspace(1,11,10) 2 numpy属性 矩阵的维度: array.ndim 矩阵的形状: array.shape 矩阵的尺寸: array.size 矩阵求和: np.sum(array),如果加上维度则变成沿行或列求和 矩阵求平均值: np.mean(array),如果加上维度则变成沿行或列求平均 矩阵最小值: np.min(array) ,如果加上维度则变成沿行或列求最小值 矩阵最大值: np.max(array) ,如果加上维度则变成沿行或列求最大值 矩阵求索引: np.argmin(array),np.argmax(array) 矩阵求累加: np.comsum(array) 矩阵求累差: np.diff(array) 矩阵排序: np.sort(array)