精华内容
下载资源
问答
  • 4.1 数组运算和矩阵运算 从外观形状和数据结构来看 ,二维数组和数学中的矩阵没有区别 .但是 ,矩阵作为一种变换或 映射算符的体现 ,矩阵运算有着明确而严格的数学规则 .而数组运算是 MATLAB 软件所定义 的规则 ,其...
  • 在NLP里面经常就会碰到三维,四维的向量运算,矩阵相乘时相当头痛,比如著名的Attention中Q、K、V相乘,实在想不出来四维的到底长什么样,又是怎么相乘的。于是特地写下此文章,记录下个人的学习路程,也希望帮到...

    高维矩阵或者向量的运算,是一个困扰着我很久的问题;在NLP里面经常就会碰到三维,四维的向量运算,矩阵相乘时相当头痛,比如著名的Attention中Q、K、V相乘,实在想不出来四维的到底长什么样,又是怎么相乘的。于是特地写下此文章,记录下个人的学习路程,也希望帮到大家。

    1、高维矩阵可视化

    一维:首先一维的矩阵非常简单,比如[1,2,3,4],可以用下图表示

    19bc91730aadcd332a992b3c2ae33199.png

    二维:接着来看二维,可用以下代码生成一个二维矩阵,采用keras框架

    import keras.backend as K
    import numpy as np
    
    a = K.constant(np.arange(1, 7), shape=[2,3])
    print(K.eval(a))

    输出为:

    [[1. 2. 3.]
     [4. 5. 6.]]

    看维度的小技巧:想知道一个矩阵的维度是几维的,只需要看开头有几个“[”,有1个即为1维,上面的两个就是两维,后面举到的三维和四维的例子,分别是有三个“[”、四个“[”的。

    上面这两维可视化长这样:

    6a0382c49d35dc3e14fae6fca3dae652.png

    为了方便后续解释三维和四维,我们把它旋转一个小角度,如下

    8f173ffe4c96ae1a563a37e387a44eb6.png

    三维:同样可用以下代码生成一个三维矩阵

    a = K.constant(np.arange(1, 13), shape=[2,2,3])
    print(K.eval(a))

    输出为:

    [[[ 1.  2.  3.]
      [ 4.  5.  6.]]
     [[ 7.  8.  9.]
      [10. 11. 12.]]]

    因为输出的结果有三个“[”,所以是三维的矩阵。这是一个shape=[2,2,3]的三维矩阵,可视化如下

    e9a689a033deae073ce1d53665622f69.png

    分片看一下!

    1a580e4cb3dcee30726a6edeb4aa92f1.png

    认真看数据的分布:三维的其实就类似于上面的二维堆起来后的样子,[[ 1. 2. 3.] [ 4. 5. 6.]]在上半部分,[[ 7. 8. 9.] [10. 11. 12.]]在下半部分,两个堆叠起来后就是最终三维的样子。

    结论:shape=[2,2,3]的三维矩阵,可以视为2个shape=[2,3]的二维矩阵堆叠在一起!!最后两维才是有数据的矩阵,前面的维度只是矩阵的排列而已!

    注意上图中红色的0,1,2,表示的是输出的三个维度,在可视化中的位置。

    总结怎么画三维:

    1. 先根据shape画出一个三维,shape=[2,2,3]分别对应着可视化中红色的0,1,2中小格子的个数
    2. 填充两维,在可视化中分别是1,2这两个维度上,把数据填充上,也就是上半部分的[[ 1. 2. 3.] [ 4. 5. 6.]]
    3. 填充剩余部分的[[ 7. 8. 9.] [10. 11. 12.]],并堆叠在一起形成三维。

    所以以后一看到三维的,就马上想起这张图,后续很有用。

    四维:同样可用以下代码生成一个四维矩阵

    a = K.constant(np.arange(1, 25), shape=[2,2,2,3])
    print(K.eval(a))

    输出为:

    [[[[ 1.  2.  3.]
       [ 4.  5.  6.]]
    
      [[ 7.  8.  9.]
       [10. 11. 12.]]]
    
    
     [[[13. 14. 15.]
       [16. 17. 18.]]
    
      [[19. 20. 21.]
       [22. 23. 24.]]]]

    在我们理解了三维后,就可以很容易的四维

    结论:shape=[2,2,2,3]的四维矩阵,可以视为2个shape=[2,2,3]的三维矩阵堆叠在一起!!然后三维的最后是用二维的堆叠组成的!!第一个2表示的是batchsize!!最后两维才是有数据的矩阵,前面的维度只是矩阵的排列而已!

    长这样,就是2个三维的

    a28528b118cd4505617de29b2a3dd75f.png

    是不是很容易理解!

    2、高维矩阵运算

    从上面可以得出结论:所有大于二维的,最终都是以二维为基础堆叠在一起的!!

    所以在矩阵运算的时候,其实最后都可以转成我们常见的二维矩阵运算,遵循的原则是:在多维矩阵相乘中,需最后两维满足shape匹配原则,最后两维才是有数据的矩阵,前面的维度只是矩阵的排列而已!

    举个例子:比如两个三维的矩阵相乘,分别为shape=[2,2,3]和shape=[2,3,2]

    a = 
    [[[ 1.  2.  3.]
      [ 4.  5.  6.]]
     [[ 7.  8.  9.]
      [10. 11. 12.]]]
    
    b = 
    [[[ 1.  2.]
      [ 3.  4.]
      [ 5.  6.]]
    
     [[ 7.  8.]
      [ 9. 10.]
      [11. 12.]]]

    上面说了,a可以表示成2个shape=[2,3]的矩阵,b可以表示成2个shape=[3,2]的矩阵,前面的额表示的是矩阵排列情况。

    计算的时候把a的第一个shape=[2,3]的矩阵和b的第一个shape=[3,2]的矩阵相乘,得到的shape=[2,2],即

    21438a067e02af4531cfdc4402e05c67.png

    同理,再把a,b个字的第二个shape=[2,3]的矩阵相乘,得到的shape=[2,2]。

    24d6e5b2bfe5ed05d99e20fdc067d241.png

    最终把结果堆叠在一起,就是2个shape=[2,2]的矩阵堆叠在一起,结果为:

    [[[ 22.  28.]
      [ 49.  64.]]
    
     [[220. 244.]
      [301. 334.]]]

    也就是shape=[2,2,3]和shape=[2,3,2]矩阵相乘,最后答案的shape为:把第一维表示矩阵排情况的2,直接保留作为结果的第一维,再把后面两维的通过矩阵运算,得到shape=[2,2]的矩阵,合起来结果shape=[2,2,2]。

    四维的同理!拆成多个三维矩阵来运算即可!!

    需要注意的是,四维中,前两维是矩阵排列,相乘的话保留前的最大值

    比如a:shape=[2,1,4,5],b:shape=[1,1,5,4]相乘,输出的结果中,前两维保留的是[2,1],最终结果shape=[2,1,4,4]


    纯手打,觉得好的欢迎点赞收藏!

    作者:卓师叔,爱书爱金融的NLPer

    微信公众号:卓师叔

    展开全文
  • 在二维的图像中,很多曲线难以直接地表示为y=y(x)的形式(如旋轮线)...曲率半径的参数表示1线性代数与矢量运算的相关知识回顾:1、叉乘:两矢量叉乘得到一个新的矢量,其方向由右手螺旋法则来确定,其大小为两个矢量...

    在二维的图像中,很多曲线难以直接地表示为y=y(x)的形式(如旋轮线),此时我们往往采取用参数表示的方法去描述曲线,而用参数方程去描述曲率半径的公式较为复杂,且难以记忆。本文将采用物理的理解方法,并利用部分线性代数知识来理解并巧记曲率半径的参数表示公式。

    曲率半径的参数表示

    1

    线性代数与矢量运算的相关知识回顾:

    1、叉乘:两矢量叉乘得到一个新的矢量,其方向由右手螺旋法则来确定,其大小为两个矢量模长相乘并乘以两矢量的夹角正弦值,也可理解为:以这两个矢量为临边所形成的的平行四边形面积

    d249ce5ca2d4a9b5572c41ccaca53075.png

    例如上图中,平面内两个向量a×b所得向量大小即为absinθ,也可理解为平行四边形面积,方向垂直纸面向外

    2、二阶行列式:二阶行列式的几何意义是两个矢量作为临边所形成的的平行四边形面积

    7c3294fbe55d04eac024e0084e5707e4.png

    将上图的两向量写为列向量的形式:

    e08a088dc9bdb024accdeee70a553cde.png

    列出行列式(并取绝对值):

    32ad7c9bef9838ebbfffe2807f4c777a.png

    此即该平行四边形的面积

    3、结论:综合前两条可知,两个向量叉乘的模长与此二向量组成的行列式的绝对值相同。因此,在给定的平面内,两矢量叉乘所得矢量的模长可表示为行列式的形式,以上图为例,即:

    6c1be454c534b61b66d36598f255f5c6.png

    2

    为了与物理直观建立联系,我们将刻画曲线的参数取为时间t,利用物理中的运动学关系:

    向心加速度=速度平方除以曲率半径

    36001ef0b6cba1ffc54e87f40c60f3ca.png

    移项可得:

    f0250f3de61276dd0f59850a2edb24e6.png

    3

    考虑任意一个运动过程:a为加速度,v为速度

    c5919ef8e98fd2b1686e6801d404aef6.png

    记速度方向(即切向)的单位向量为τ(方向沿速度方向,大小为1)

    7bc3ae848ebf19e44095babba43252df.png

    有如下几何关系

    94abec3d8e53e8194a3e8bd7baba613f.png

    考虑到第一部分所述的叉乘与正弦之间的关系,可以进一步改写为:

    5b3ec17588b924044640cedc72e119fd.png

    带入第二部分我们已经得到的公式:

    f0250f3de61276dd0f59850a2edb24e6.png

    最终得到:

    f0c5487b59dd9ec914ab00e8fce7a1f8.png

    4

    以时间t为参数,v与a作为向量可以被写为(按列向量处理):

    12c0d93f472cd0a33e5fd99e9cbfa3f2.png

    回顾第一部分我们得到的结论,此二向量叉乘的结果可表示为:

    a89d97ac3d90e5ec22527b539b234c00.png

    带入曲率半径表达式,得到最终结果:

    9589a870721e928716bb4db4bdd62fba.png

    虽然我们选取的参数是具有物理意义的时间t,但在数学上无论用什么参数去刻画,本质上是等价的,因此最后得到的结论是具有普适性的

    笔者认为,此方法通过结合物理意义,不仅给出了一种快速推导曲率半径参数公式的方法,更重要的是若将二维曲线改为三维曲线,此时只能用参数去刻画空间曲线,而此公式的前半部分推导结果依然成立,具有更强的普适性

    8fc34b5a9c7c0c1f1e530de9ff8c19ef.png

    奇技淫巧学术驿站

    生活不可万事都硬刚,学术也一样~

    微信号 : qjyqxsyz

    ● 扫码关注我们

    展开全文
  • 向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。点乘公式对于向量a和向量b: a和b的点积公式为: 要求一维向量a和向量b的行列...

    向量是由n个实数组成的一个n行1列(n*1)或一个1行n列(1*n)的有序数组;

    向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。

    点乘公式

    对于向量a和向量b:

                          

    a和b的点积公式为:

    要求一维向量a和向量b的行列数相同。

    点乘几何意义

    点乘的几何意义是可以用来表征或计算两个向量之间的夹角,以及在b向量在a向量方向上的投影,有公式:

    推导过程如下,首先看一下向量组成:

    定义向量:

    根据三角形余弦定理有:

    根据关系c=a-b(a、b、c均为向量)有:

    即:

    向量a,b的长度都是可以计算的已知量,从而有a和b间的夹角θ:

    根据这个公式就可以计算向量a和向量b之间的夹角。从而就可以进一步判断这两个向量是否是同一方向,是否正交(也就是垂直)等方向关系,具体对应关系为:

    a·b>0    方向基本相同,夹角在0°到90°之间

    a·b=0    正交,相互垂直

    a·b<0    方向基本相反,夹角在90°到180°之间

    叉乘公式

    两个向量的叉乘,又叫向量积、外积、叉积,叉乘的运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量组成的坐标平面垂直。

    对于向量a和向量b:

    a和b的叉乘公式为:

    其中:

    根据i、j、k间关系,有:

    叉乘几何意义

    在三维几何中,向量a和向量b的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于a和b向量构成的平面。

    在3D图像学中,叉乘的概念非常有用,可以通过两个向量的叉乘,生成第三个垂直于a,b的法向量,从而构建X、Y、Z坐标系。如下图所示:

    在二维空间中,叉乘还有另外一个几何意义就是:aXb等于由向量a和向量b构成的平行四边形的面积。

    展开全文
  • 向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。1. 点乘公式对于向量a和向量b: a和b的点积公式为:要求一维向量a和向量b的...

    【转】向量点乘(内积)和叉乘(外积、向量积)概念及几何意义解读

    向量是由n个实数组成的一个n行1列(n*1)或一个1行n列(1*n)的有序数组;

    向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。

    1. 点乘公式

    对于向量a和向量b:

     

    a和b的点积公式为:

    要求一维向量a和向量b的行列数相同。

    点乘几何意义

    点乘的几何意义是可以用来表征或计算两个向量之间的夹角,以及在b向量在a向量方向上的投影,有公式:

    推导过程如下,首先看一下向量组成:

    定义向量:

    根据三角形余弦定理有:

    根据关系c=a-b(a、b、c均为向量)有:

    即:

    向量a,b的长度都是可以计算的已知量,从而有a和b间的夹角θ:

    根据这个公式就可以计算向量a和向量b之间的夹角。从而就可以进一步判断这两个向量是否是同一方向,是否正交(也就是垂直)等方向关系,具体对应关系为:

    2. 叉乘公式

    两个向量的叉乘,又叫向量积、外积、叉积,叉乘的运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量组成的坐标平面垂直。

    对于向量a和向量b:

    a和b的叉乘公式为:

    其中:

    根据i、j、k间关系,有:

    叉乘几何意义

    在三维几何中,向量a和向量b的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于a和b向量构成的平面。

    在3D图像学中,叉乘的概念非常有用,可以通过两个向量的叉乘,生成第三个垂直于a,b的法向量,从而构建X、Y、Z坐标系。如下图所示:

    在二维空间中,叉乘还有另外一个几何意义就是:aXb等于由向量a和向量b构成的平行四边形的面积

    原文链接:https://blog.csdn.net/dcrmg/article/details/52416832

    展开全文
  • 向量

    2020-03-24 16:01:42
    数量积(点乘)的结果是数,用“”·“”来运算,模相乘再乘上夹角余弦 数量积满足交换律、结合律以及分配律 两向量的夹角公式 性质 数量积的坐标表达式 投影的运算 模的长度乘上夹角余弦 a在b上面的投影就是b的...
  • 1、点乘 Mat a,b,c; c = a*b; 必须是CV_32F,CV_64FC1等。 ...a和b的点积公式为: ...要求向量a和向量b的行列数相同。可以是CV_8UC1等 3、mul Mat a,b,c; a = b.mul(c); 对应位置相乘,可以是CV_8...
  • 向量是由n个实数组成的一个n行1列(n*1)或...向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。 点乘公式 对于向量a和向量b:
  • 向量的点乘1.1 释义 向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。1.2 点乘公式 对于向量a(a1, a2,…, an)和向量b(b1, b2,....
  • 向量:u=(u1,u2,u3) v=(v1,v2,v3)叉积公式:u x v = { u2v3-v2u3 , u3v1-v3u1 , u1v2-u2v1 }点积公式:u * v = u1v1+u2v2+u3v33=lul*lvl*COS(U,V)对于向量运算,还有两个“乘法”,那就是点乘和叉乘了。...
  • 定义向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位置相乘之后求和的操作,点乘的结果是一个标量。2.举例对于向量a和向量b:a和b的点积公式为:要求一维向量a和向量b的行列数...
  • 向量的内积

    2019-10-14 10:58:00
    对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,如下所示,对于向量a和向量b: a和b的点积公式为: 这里要求一维向量a和向量b的行列数相同。注意:点乘的结果是一个标量(数量而不是向量)...
  • 向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。 点乘公式 对于向量a和向量b: &nbsp; &nbsp; &nbsp; &...
  • 声明:由于敲公式比较慢,主要归纳一些...变量为向量时,仅将其看作多个实数,无所谓行/列向量之分,有些地方规定结果形如行/列向量,仅仅为了公式用矩阵相乘的方式表示出来,进而与其他部分进行矩阵运算;(即满足...
  • 向量的点乘和叉乘

    2019-11-11 18:01:53
    ,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。 点乘公式 对于向量a和向量b: a和b的点积公式为: 点乘几何意义 点乘的几何意义是可以...
  • 对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,如下所示,对于向量a和向量b: a和b的点积公式为: 这里要求一维向量a和向量b的行列数相同。注意:点乘的结果是一个标量(数量而不是...
  • 向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。点乘公式对于向量a和向量b: a和b的点积公式为: 要求一维向量a和向量b的行列...
  • 向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。点乘公式对于向量a和向量b:a和b的点积公式为:要求一维向量a和向量b的行列数...
  • 向量点乘(内积)

    2019-11-11 20:51:20
    向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。 点乘公式 对于向量a和向量b: a和b的点积公式为: 要求一维向量a和向量b的...

空空如也

空空如也

1 2 3 4 5 6
收藏数 111
精华内容 44
关键字:

向量相乘运算公式