【发布时间】:2021-01-16 18:07:03
【问题描述】:
以下代码表示两个 3D (2x2x2) 矩阵的 Einstein 和是一个 4D (2x2x2x2) 矩阵。
$ c_{ijlm} = \Sigma_k a_{i,j,k}b_{k,l,m} $
$ c_{0,0,0,0} = \Sigma_k a_{0,0,k}b_{k,0,0} = 1x9 + 5x11 = 64 $
但是,根据下面的结果,c_{0,0,0,0} = 35:
>>> a=np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
>>> b=np.array([[[9,10],[11,12]],[[13,14],[15,16]]])
>>> c=np.einsum('ijk,klm->ijlm', a,b)
>>> c
array([[[[ 35, 38],
[ 41, 44]],
[[ 79, 86],
[ 93, 100]]],
[[[123, 134],
[145, 156]],
[[167, 182],
[197, 212]]]])
有人能解释一下手术是如何进行的吗?
【问题讨论】:
标签: numpy numpy-einsum