简易理解多维矩阵运算---可视化理解

文章介绍了如何理解并可视化一维至四维的矩阵,特别是在深度学习中,强调了矩阵运算时最后两维满足shape匹配原则,以及在多维矩阵相乘时如何处理不同维度的矩阵。通过Keras和numpy示例展示了如何创建和操作这些矩阵,并给出了具体的运算规则和实例。
摘要由CSDN通过智能技术生成

理解多维矩阵运算


深度学习时会遇到元素相乘的情况:比如在深度学习中的注意力机制计算过程中计算加权和,于是查阅相关资料,以便理解数据的变换和相互运算。

1.高维矩阵可视化


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

  • **一维:**一维的矩阵非常简单,比如[1,2,3],可以用下图表示
    在这里插入图片描述

  • **二维:**可以用以下代码生成一个二维矩阵,采用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.]]
    

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

在这里插入图片描述

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

在这里插入图片描述

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

    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]的三维矩阵,可以视为2个shape=[2,3]的二维矩阵堆叠在一起!!最后两维才是有数据的矩阵,前面的维度只是矩阵的排列而已!

  • **四维:**堆叠的三维
    在这里插入图片描述

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

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的第一个shape=[2,3]的矩阵和b的第一个shape=[3,2]的矩阵相乘,得到的shape=[2,2],即

在这里插入图片描述

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

在这里插入图片描述

最终把结果堆叠在一起,就是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]

需要注意的是,四维中,前两维是矩阵排列,相乘的话保留前的最大值。–两个n维数组的前n-2维一般要相同,除了一维的情况.

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

转载来自:【全面理解多维矩阵运算】多维(三维四维)矩阵向量运算-超强可视化 - 知乎 (zhihu.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值