目录
前言
在深度学习中经常会遇到不同维度的矩阵相乘的情况,本文会通过一些例子来展示不同维度矩阵乘法的过程。
总体原则:在高维矩阵中取与低维矩阵相同维度的子矩阵来与低维矩阵相乘,结果再按子矩阵的排列顺序还原为高维矩阵。相乘结果的维度与原来的高维矩阵一致。
具体来说,当一方为一维矩阵时,另一方取其最后一维子矩阵来做乘法;当两方都是大于等于2维的矩阵时,取各自的最后两维构成的子矩阵来做乘法,其他维度体现结果的拼接信息,不参与运算(为batch训练提供了便利,batch中各样本的顺序在矩阵运算前后保持一致)。
实例:下面我们从低维到高维,依次演示不同维度矩阵相乘的结果。
二维乘一维
二维矩阵依次取出一维的行向量与一维矩阵做内积
#二维乘一维
import numpy as np
a = np.linspace(1,4,4).reshape(2,2)
b = np.array([1,1])
c = np.matmul(a,b)
print('a:\n',a)
print('b:\n',b)
print('ab:\n',c)
三维乘一维
三维矩阵包含两个二维矩阵,分别将这两个二维矩阵与一维矩阵相乘(乘积为一维),结果按原来的顺序拼接起来,构成一个二维矩阵
#三维乘一维
import numpy as np
a = np.linspace(1,8,8).reshape(2,2,2)
b = np.array([1,1])
c = np.matmul(a,b)
print('a:\n',a)
print('b:\n',b)
print('ab:\n'