我正在尝试用ten2_Ckr收缩这样的张量ten1_Air,其中i= k,以获得张量test_ACi
我认为在i= k的情况下,正确的einsum应该是:
test_ACi = np.einsum('Air,Cir->ACi',ten1_Air,ten2_Ckr)然而,看起来正确的形式是:
test_ACi = np.einsum('Air,Ckr->ACi',ten1_Air,ten2_Ckr)这些缩写中哪一个是正确的?为什么?如有任何解释,我将不胜感激。
发布于 2019-08-13 03:01:25
在……里面
'Air,Cir->ACi'i维度实质上是经过的--尽管移动到了末尾。r维度是被求和的维度(如矩阵乘积)。在传统的dot格式中,这将是
loop on i:
dot(Ar, rC)使用
'Air,Ckr->ACi'A、C、r的行为相同。i通过。“k”是求和的,如在ten2_Ckr.sum(axis=1)中。
基本规则是对出现在左侧但不出现在右侧的尺寸进行求和。求和是不同的,这取决于它们出现在左侧中的一个或两个中的哪个位置。其他维度通过,一些表现得更像一个“批次”维度,另一些则像一个“外部”维度。
https://stackoverflow.com/questions/57466647
复制相似问题