我正在尝试在3+轴上进行元素逐点运算
np.random.seed(10)
a = np.random.randint(0, 5, (2,1,3)) # should also work with
b = np.random.randint(0, 5, (2,3,1)) # higher dim, eg. (2,2,1,3) * (2,2,3,1)
print(a)
print(b)
print()
res = np.dot(a,b)
print(res.shape)
res
我明白了
[[[1 4 0]]
[[1 3 4]]]
[[[1]
[0]
[1]]
[[2]
[0]
[1]]]
(2, 1, 2, 1)
array([[[[1],
[2]]],
[[[5],
[6]]]])
但我想要
[[[1]],
[[6]]]
我尝试过
np.multiply(a,b)
给出的(2,3,3)
非常接近,因此我还尝试了(2,3,1)
的{{1}},认为它可能会产生(2,1,3)
,但不会改变形状。我希望(2,1,1)
或只是(2,1,1)
。
此外,我仅限于使用Keras后端函数,因为这将直接进入我的损失函数。 Keras具有numpy函数的(2,)
,.dot()
等效项。
我该怎么做?
更新:.prod()
做我想要做的事情:
np.matmul()
但是我仍然不知道如何使用keras后端点或乘法来做到这一点。