我正在尝试将张量ten1_Air与ten2_Ckr(其中,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)
其中哪些收缩是正确的,为什么?我将不胜感激。
答案 0 :(得分:1)
在
'Air,Cir->ACi'
i
维度实际上经过-尽管移动到最后。 r
维是求和的维(如矩阵乘积)。在常规的dot
格式中,该格式为
loop on i:
dot(Ar, rC)
使用
'Air,Ckr->ACi'
A,C,r表现相同。 i
通过。如在ten2_Ckr.sum(axis=1)
基本规则是,对出现在左侧但不在右侧的尺寸进行求和。求和因它们仅出现在左侧之一或两者中的位置而异。其他维度通过,某些行为更像是“批处理”维度,其他行为更像“外部”对。