高维数组的"矩阵相乘"

2019-10-28  本文已影响0人  胜负55开

需求:高维(至少3维以上)的两个数组,进行线性代数中的矩阵相乘!下面的规律numpy和cupy都适用。

两个数组尺寸要求:

例子:

import numpy as np

# 前两个高维4和3必须对应完全相等!后面两个只需满足矩阵相乘要求即可。
a = np.zeros( (4,3,4,2) ) + 1  
b = np.zeros( (4,3,2,4) ) + 2

w = np.matmul(a,b)
print( w.shape )

# 结果:
(4, 3, 4, 4)

结果的说明:我们已经知道,高维数组的单位其实就是一个个二维矩阵;上面例子的"高维数组相乘",其实就是"两个矩阵彼此之间二维矩阵单位的相乘"而已!高维仅代表这样的单位有很多,整体做了很多对应位置的单位相乘罢了(直接用高维数组相乘,比用循环对应位置一个一个循环乘要快太多!!)。

因此:再高纬度的矩阵,都能直接进行快速的矩阵相乘,这为"矢量化编程"创造了条件。

上一篇 下一篇

猜你喜欢

热点阅读