【发布时间】:2014-05-05 06:35:18
【问题描述】:
假设我有矩阵 A 和 B。
A 是一个三维数组/张量(?)。
[1,2,3,4]
[5,6,7,8]
[1,2,3,4]
[5,6,7,8]
说有 4 个不同的 2d 矩阵,就像上面的那样跨越第三维。
B 是一个矩阵。
[1,2,3,4]
B中也有4个,每个都是一样的。
如何将 B 中的每个向量(?)与 A 中的每个二维矩阵相乘。
[1,2,3,4]*[1,2,3,4]*[1;2;3;4]
[5,6,7,8]
[1,2,3,4]
[5,6,7,8]
将有四个上述类型的乘法得到四个 4x1 向量。 我已经用 numpy 试过了:
y = numpy.arange(4).reshape(1,4)
z = numpy.arange(64).reshape(4,4,4)
y.dot(z).dot(numpy.transpose(y))
------
Output:
array([[[ 420],
[ 996],
[1572],
[2148]]])
它可以按我的意愿工作。但我不知道 numpy 是如何广播的,我想知道出于学习目的,以及其他用于处理不同库中矩阵的包以不同方式处理广播。我试图以不同的方式平铺 B 以获得相同的结果,但没有任何效果。如果我没有解释清楚,请告诉我。
还希望从 numpy 获得 4x1 而不是 3d 返回。
【问题讨论】: