所以我的数组 A
形状为 [32,60,60]
,数组 B
形状为 [32,60]
. 第一个维度是批量大小,因此第一个维度是独立的 . 我想要做的是通过向量乘法的简单矩阵 . 因此,对于 A
中的每个样本,我想将形状矩阵 [60,60]
与形状 [60]
的向量相乘 . 乘以批处理 A
* B
应该给我一个形状 [32,60]
的数组 .
这应该很简单,但我做错了:
>>> v = np.matmul(A,B)
ValueError: shapes (32,60,60) and (32,60) not aligned: 60 (dim 2) != 32 (dim 0)
这是针对张量流,但如果我可以转换符号,那么一个笨拙的答案就足够了 .
1 回答
看来你正试图用两个输入数组的最后一个轴
matrix-multiplication
. 所以,对于np.einsum
,它将是 -对于
tensorflow
,我们可以使用tf.einsum .使用np.matmul,我们需要通过在最后一个轴上引入一个新轴来将
B
扩展为3D
. 因此,使用np.matmul
将获得B's
扩展版本sum-reduced
的第二个轴与A
的第三个轴 . 结果将是3D
. 因此,使用切片或np.squeeze
来挤出最后一个单独的轴 . 因此,实施将是 -我们已经有了tf.matmul函数 .