【发布时间】:2020-11-18 16:24:54
【问题描述】:
我正在寻找 numpy 中的矩阵运算,或者最好是 pytorch 中的矩阵运算,它允许将向量 (1 x N) 乘以张量 (N x M x M) 并得到 (1 x M x M)。这可以使用 for 循环轻松完成,但 for 循环不允许在训练期间进行反向传播。我尝试在 numpy 和 pytorch(以及其他几个,如 dot 和 bmm)中使用 matmul,但无法正常工作。这是我正在尝试做的一个示例(其中 M=2,但在我的用例中为 256):
a = np.array([1,2,3])
b = np.array([[[1,2],[3,4]],[[5,6],[7,8]],[[9,10],[11,12]]])
我想执行操作:1*[[1,2],[3,4]] + 2*[[5,6],[7,8]] + 3*[[9,10],[11,12]],可以通过这样的 for 循环来实现:
for i in range(3):
matrix_sum += a[i]*b[i]
任何建议或解决方案将不胜感激。
【问题讨论】:
-
A@B的规则是A的最后一个dim和B的倒数第二个。N就是这个维度,所以B需要改成(M,N ,M)
标签: python arrays numpy pytorch matrix-multiplication