矩阵转置

四个基本空间

北城以北 提交于 2020-03-14 12:49:07
概述 讨论矩阵的四个基本子空间,通过维数和基来深入了解四个子空间。 列空间 列空间我们都熟悉了,就是矩阵列线性组合组成的空间。 位于: \(R^m\) 空间 维数:r 一组基:主元列 零空间 零空间也并不陌生,使 \(Ax=0\) 的所有x组成的空间 位于: \(R^n\) 空间 维数: n-r 一组基: 特解 行空间 行空间可以看作 \(A^T\) 的列空间 一个有趣的性质是一个矩阵的秩如果是r,那么它的转置的秩也是R,所以行空间的维数得到了。是m-r 从基的定义我们知道,对于行空间的一组基,其实就是那些线性无关行组成的集合,那不正是简化行阶梯型(rref)中的非零行嘛,也就是前r行。 位于: \(R^n\) 空间 维数: r 一组基: rref中的前r行 左零空间 左零空间是行空间的零空间,也可以看作 \(A^T\) 的零空间,也就是使得 \(A^Ty=0\) 的所有y组成的空间 为啥叫左零空间??因为 \(A^Ty=0\) 可以看作 \((A^Ty)^T=0^T\) ,也就是 \(y^TA=0\) 。 再重复一遍这个公式: \(y^TA=0\) 嘶根据矩阵的乘法规则,那 \(y^T\) 不就是简化行阶梯中的零行所对应消元矩阵嘛的行嘛。 所以用高斯若尔当法求出消元矩阵,再取后m-r行就可以了嘛。。。 位于: \(R^m\) 空间 维数: m-r 一组基:A消元矩阵的后m-r行

矩阵操作(数据,数组向量,表格)

余生颓废 提交于 2020-03-11 10:07:15
一、矩阵的表示 在MATLAB中创建矩阵有以下规则: a、矩阵元素必须在”[ ]”内; b、矩阵的同行元素之间用空格(或”,”)隔开; c、矩阵的行与行之间用”;”(或回车符)隔开; A=[1 2 3 4 5; 12 12 14 56 657; 23 46 34 67 56 ]; d、矩阵的元素可以是数值、变量、表达式或函数; e、矩阵的尺寸不必预先定义。 二,矩阵的创建: 1、直接输入法 最简单的建立矩阵的方法是从键盘直接输入矩阵的元素,输入的方法按照上面的规则。建立向量的时候可以利用冒号表达式,冒号表达式可以产生一个行向量,一般格式是: e1:e2:e3,其中e1为初始值,e2为步长,e3为终止值。还可以用linspace函数产生行向量,其调用格式为:linspace(a,b,n) ,其中a和b是生成向量的第一个和最后一个元素,n是元素总数。 linspace(1,5,8) ans = 1 至 5 列 1.0000 1.5714 2.1429 2.7143 3.2857 6 至 8 列 3.8571 4.4286 5.0000 2、利用MATLAB函数创建矩阵 基本矩阵函数如下: (1) ones()函数:产生全为1的矩阵,ones(n):产生n*n维的全1矩阵,ones(m,n):产生m*n维的全1矩阵; (2) zeros()函数:产生全为0的矩阵; (3) rand(

卷积的实现原理

筅森魡賤 提交于 2020-03-09 13:48:02
卷积的实现原理 特征图作为矩阵乘法的右元 特征图作为矩阵乘法的左元 总结   我前面的一篇文章中, 卷积操作的计算量 分析中,引用了矩阵相乘来概括卷积的计算量,这样做确实是有道理的,因为在 卷积的实现中的确是通过矩阵相乘来加速卷积的计算。 但是我在那篇文章只是简单的通过矩阵相乘来简单的分析了一下维度信息,事实上,各种框架的实现也并不一定符合我的分析,但是殊途同归。   本文将为大家耐心整理了一下具体的实现( 吐槽一下干这件事确实花了我相当多的功夫,因为网上写的东西太乱了,很多人都搞错了框架和实现的对应。再或者是自己的分析和配图不符,或者是自己实现后一运行,单通道对了,多通道就错了 。)   首先也是从最容易错的地方,通道这个概念说起,大体目前的框架实现卷积的时候,特征图格式分为两种,一种是 N ∗ C ∗ H ∗ W N*C*H*W N ∗ C ∗ H ∗ W ,即N表示batchsize中特征图的数量,C表示通道数,H,W表示每个特征图的长宽。一种是 N ∗ H ∗ W ∗ C N*H*W*C N ∗ H ∗ W ∗ C ,与第一种的区别在于通道的位置不一样。首先通道的位置决定了一个通道是否连续的问题,连续的利于访问局部性,可以提高速度。另一个差异决定了决定了矩阵乘法的结果形状转化有区别。   另外一处区别就在于,那就是矩阵乘法操作的特征图作为左元和右元的区别。这句话怎么理解

线性代数(四)置换,转置,向量空间

让人想犯罪 __ 提交于 2020-03-09 08:39:50
置换矩阵P 置换矩阵(permutations)P是行重新排列了的单位矩阵。对于n×n的矩阵来说一共有n!种行变换的形式。所有的置换矩阵均是可逆的。 在求矩阵的逆,解方程组Ax=b,这些情况下如果出现主元位置为0的时候,就需要使用行互换。 A=LU,其中L为下三角矩阵,U为上三角矩阵。 P-1 = PT ,PTP = I P矩阵的转置乘以本身等于单位矩阵。 转置矩阵 转置(transpose)记作T,一个3行2列的矩阵,他的转置矩阵为2行3列,且(AT)ij = Aji。 对称矩阵 对称矩阵(symmetric matrices),一个矩阵为对称矩阵意味着它经过转制之后该矩阵没有变化。AT=A。 一个矩阵乘以他的转置矩阵,得到的矩阵一定是对称矩阵。RTR is always symmetric。 但是为什么呢? 我们利用定义来证明(RTR)T = RTRTT = RTR,注意这里的矩阵的转置的转置是原矩阵。验证完毕。 向量空间 向量空间(Vector Spaces) 举个例子,R2称为一个平面有所有的2维向量组成的向量空间。为了防止在运算过程中超出向量空间的范围,向量空间必须对数乘和加法两种运算是封闭的或者说对线性组合封闭。R2的子空间必须是过原点的线段,也可以是它本身。第三种R2的子空间是零向量。 这里没听太明白。。。 来源: CSDN 作者: CZZ_CS 链接: https:

利用全卷积网络进行车道识别

五迷三道 提交于 2020-03-08 18:12:08
预先训练好的VGG-16网络 https://gist.github.com/baraldilorenzo/07d7802847aaad0a35d3 VGG 16http://www.robots.ox.ac.uk/~vgg/research/very_deep/ 代码实现 https://github.com/mengli/MachineLearning/blob/master/self_driving/road_seg/convnet.py 我们再把4 \times 4的输入特征展成16 \times 1的矩阵X: 那么输出矩阵Y=CX则是一个 4 × 1 4 \times 1 4 × 1 的输出特征矩阵,把它重新排列成$2 \times 2的输出特征就得到最终的结果,通过上述的分析,我们可以看到卷积操作可以表示为和矩阵C相乘,那么反卷积操作就是和矩阵C的转置C^T相乘。因此,反卷积操作也被称为转置卷积操作(transposed convolutional layer)。 下图所示的是参数为 i ′ = 2 , k ′ = 3 , s ′ = 1 , p ′ = 2 i'=2, k'=3, s'=1, p'=2 i ′ = 2 , k ′ = 3 , s ′ = 1 , p ′ = 2 的反卷积操作,其对应的卷积操作参数为 i = 4 , k = 3 , s = 1 , p =

3D数学 ---- 矩阵的更多知识(2)

坚强是说给别人听的谎言 提交于 2020-03-07 14:36:04
矩阵的逆 另外一种重要的矩阵运算是矩阵的求逆,这个运算只能用于方阵。 运算法则 方阵 M 的逆,记作 M-1 ,也是一个矩阵。当 M 与 M-1 相乘时,结果是单位矩阵。表示为公式9.6的形式: 并非所有的矩阵都有逆。一个明显的例子是若矩阵的某一行或列上的元素都为0,用任何矩阵乘以该矩阵,结果都是一个零矩阵。如果一个矩阵有逆矩阵,那么称它为可逆的或非奇异的。如果一个矩阵没有逆矩阵,则称它为不可逆的或奇异矩阵。奇异矩阵的行列式为0,非奇异矩阵的行列式不为0,所以检测行列式的值是判断矩阵是否可逆的有效方法。此外,对于任意可逆矩阵 M ,当且仅当 v = 0 时, vM = 0 。 M 的”标准伴随矩阵“记作”adj M “,定义为M的代数余子式矩阵的转置矩阵。下面是一个例子,考虑前面给出的3x3阶矩阵 M : 计算 M 的代数余子式矩阵: M 的标准伴随矩阵是代数余子式矩阵的转置: 一旦有了标准伴随矩阵,通过除以 M 的行列式,就能计算矩阵的逆。 其表示如公式9.7所示: 例如为了求得上面矩阵的逆,有: 当然还有其他方法可以用来计算矩阵的逆,比如高斯消元法。很多线性代数书都断定该方法更适合在计算机上实现,因为它所使用的代数运算较少,这种说法其实是不正确的。对于大矩阵或某些特殊矩阵来说,这也许是对的。然而,对于低阶矩阵,比如几何应用中常见的那些低阶矩阵,标准伴随矩阵可能更快一些

Eigen矩阵基本运算

血红的双手。 提交于 2020-03-07 07:06:00
1 矩阵基本运算简介 Eigen重载了+,-,*运算符。同时提供了一些方法如dot(),cross()等。对于矩阵类的运算符重载只支持线性运算,比如matrix1*matrix2是矩阵相乘,当然必须要满足矩阵乘法规则。对于向量和标量的加法(vector+scalar)这里并不支持,关于非线性运算这里暂不介绍。 2 加减运算 矩阵加减运算中必须要保证左右矩阵的行列对应相等。此外更重要的一点是,矩阵的类型也必须一致,这里的矩阵运算 并不支持隐式的类型转换 。矩阵运算中重载的运算符有: 二元运算符+:a+b 二元运算符-:a-b 一元运算符-:-a 复合运算符+=:a+=b 复合运算符-=:a-=b 下面是使用示例: #include <iostream> #include "Eigen\Dense" using namespace Eigen; int main() { Matrix2d a; a<<1,2, 3,4; MatrixXd b(2,2); b<<2,3, 1,4; std::cout<<"a+b=\n"<<a+b<<std::endl; std::cout<<"a-b=\n"<<a-b<<std::endl; std::cout<<"Doing a+=b;"<<std::endl; a+=b; std::cout<<"Now a=\n"<<a<<std::endl;

行列式及其应用

吃可爱长大的小学妹 提交于 2020-03-06 15:50:19
行列式 注意   本文参照 M I T MIT M I T 公开课, 可以看成是笔记。 什么是行列式   一个矩阵通常包括很多信息, 比如是否可逆等等。而对于每一个方阵, 都有一个数能够表示关于矩阵的很多信息, 这个数就叫做行列式。(本文从性质入手讲, 推导并不严谨, 不过这些性质都是经过严格证明了的)行列式也可以看做是从矩阵到实数的一个映射。要注意的是只有方阵才有行列式!!! 行列式的表示法   若 A A A 为方阵, 则其行列式可表示为: d e t ( A ) 或 ∣ A ∣ det(A)或\\ \left| A \right| d e t ( A ) 或 ∣ A ∣ 行列式的基本性质   行列式的基本性质有3条, 并且从这三条基本性质能够推出其他性质以及行列式的表达式。下面给出三条基本性质。    ① 单 位 矩 阵 的 行 列 式 为 1 ①单位矩阵的行列式为1 ① 单 位 矩 阵 的 行 列 式 为 1   对于这条性质没有过多的解释, 有点类似于定义, 将单位矩阵映射成为实数中的1, 也符合简便性。    ② 交 换 矩 阵 中 的 任 意 两 行 , 所 得 的 矩 阵 的 行 列 式 符 号 变 号 ②交换矩阵中的任意两行, 所得的矩阵的行列式符号变号 ② 交 换 矩 阵 中 的 任 意 两 行 , 所 得 的 矩 阵 的 行 列 式 符 号 变 号  

Harris角点检测原理详解

 ̄綄美尐妖づ 提交于 2020-03-06 06:00:16
http://blog.csdn.net/lwzkiller/article/details/54633670 关于角点的应用在图像处理上比较广泛,如图像匹配(FPM特征点匹配)、相机标定等。网上也有很多博客对Harris角点检测原理进行描述,但基本上只是描述了算法流程,而其中相关细节并未作出解释,这里我想对有些地方做出补充说明,正所谓知其然知其所以然,如有不对,还望指正。 关于角点的应用在图像处理上比较广泛,如图像匹配(FPM特征点匹配)、相机标定等。网上也有很多博客对Harris角点检测原理进行描述,但基本上只是描述了算法流程,而其中相关细节并未作出解释,这里我想对有些地方做出补充说明,正所谓知其然知其所以然,如有不对,还望指正。 1. 何为角点? 下面有两幅不同视角的图像,通过找出对应的角点进行匹配。 再看下图所示,放大图像的两处角点区域: 我们可以直观的概括下角点所具有的特征: >轮廓之间的交点; >对于同一场景,即使视角发生变化,通常具备稳定性质的特征; >该点附近区域的像素点无论在梯度方向上还是其梯度幅值上有着较大变化; 2. 角点检测算法基本思想是什么? 算法基本思想是使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。 3

2 线性代数基础

感情迁移 提交于 2020-03-05 15:56:11
转自: https://blog.csdn.net/longxinchen_ml/article/details/51629328 1 基本概念和符号 线性代数可以对一组线性方程进行简洁地表示和运算。例如,对于这个方程组: 这里有两个方程和两个变量,如果你学过高中代数的话,你肯定知道,可以为x1 和x2找到一组唯一的解 (除非方程可以进一步简化,例如,如果第二个方程只是第一个方程的倍数形式。但是显然上面的例子不可简化,是有唯一解的)。在矩阵表达中,我们可以简洁的写作: 其中: 很快我们将会看到,咱们把方程表示成这种形式,在分析线性方程方面有很多优势(包括明显地节省空间)。 1.1 基本符号 以下是我们要使用符号: 符号 A ∈ R m×n 表示一个m行n列的矩阵,并且矩阵A中的所有元素都是实数。 符号x ∈ R n 表示一个含有n个元素的向量。通常,我们把n维向量看成是一个n行1列矩阵,即列向量。如果我们想表示一个行向量(1行 n 列矩阵),我们通常写作 x T ( x T 表示x的转置,后面会解释它的定义)。 一个向量x的第 i 个元素表示为x i : 我们用 a ij (或 A ij , A i , j ,等) 表示第 i 行第 j 列的元素: 我们用 a j 或 A : , j 表示A矩阵的第 j 列元素: 我们用 a T i 或 A i , : 表示矩阵的第i行元素: