python中二维数据乘以三维数据
问题描述
在图像处理中,我们经常遇到图像堆叠的数据。一般数据大小为(图片数量,图片宽度,图片高度),比如(100, 128, 128)表示100张 (128 128)的灰度图像。 如果我们想对100张图片进行处理,比如乘以一个二维矩阵。那么python中二维矩阵乘以三维矩阵的计算方式就有待研究。
测试
a = np.array([1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,9,8,7,6,5,4,3,2,1]).reshape(-1,3,3)
b = np.array([9,8,7,6,5,4,3,2,1]).reshape(3,3)
c = np.dot(a, b)
print(a.shape, c.shape)
print(a)
print(c)
d = np.array([1,2,3,4,5,6,7,8,9]).reshape(-1,3,3)
e = np.array([9,8,7,6,5,4,3,2,1]).reshape(-1,3,3)
print('D*E is \t', np.dot(d,e)) # 说明每一层都是和二维矩阵相乘的结果一致。
上述代码可以看出,python矩阵乘法,会默认二维矩阵乘以三维矩阵。会对三维矩阵后面两个维度(匹配到相同的维度,可以相乘的)进行矩阵相乘。