python - 将 3D 矩阵与 2D 矩阵相乘

标签 python numpy matrix matrix-multiplication

我有两个矩阵要相乘。一种是权重矩阵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/

相关文章:

python - pandas 连接具有重复索引的列

python - 当窗口大小调整时,Kivy recycleview 项目会重新排序

python - multiprocessing.Process 的日志输出

python - 使用列表在 NumPy 中定义数据类型?

python - numpy 数组中的最小函数

python - Anaconda:永久包含外部包(如在 PYTHONPATH 中)

python - 在 2d numpy 数组的每一行中找到最小的非零值

python - 代码优化——Python中的函数调用次数

dataframe - 我可以用 Octave 命名矩阵的行和列吗?

ios - 创建值递增 Swift 的 nXn 矩阵