我有两个矩阵要相乘。一种是权重矩阵W
,其大小为900x2x2。另一个是输入矩阵I
,其大小为2x2。
我想对 c = WI
进行求和,这将是一个 900x1 矩阵,但是当我执行该操作时,它会将它们相乘并给出一个 又是 900x2x2 矩阵。
问题#2(相关):所以我将它们都制作为二维并相乘 900x4 * 4x1
,但这给了我一个错误:
ValueError: operands could not be broadcast together with shapes (900,4) (4,1)
最佳答案
您似乎试图通过矩阵乘法丢失第一个数组的最后两个轴与第二个权重数组的唯一两个轴。我们可以将这个想法转化为 NumPy 代码 np.tensordot
并假设 arr1 和 arr2 分别作为输入数组,如下 -
np.tensordot(arr1,arr2,axes=([1,2],[0,1]))
另一种更简单的放入 NumPy 代码的方法是使用 np.einsum
,就像这样 -
np.einsum('ijk,jk',arr1,arr2)
关于python - 将 3D 矩阵与 2D 矩阵相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38785566/