首页 > 解决方案 > 使用 einsum 的张量接触

问题描述

我一直在阅读以下列方式执行张量收缩的代码:

Ecorr = np.einsum('xscd,AbxS,as,SA->abcd',R_xsab,T_abxs,get.s('as'),get.s('sa'))

我试图了解 numpy 如何执行此操作,因此我尝试将其拆分为一些步骤:

tmp1 = np.einsum('xscd,as->xacd',R_xsab,get.s('as'))
tmp2 = np.einsum('abxS,SA->abxA',T_abxs,get.s('sa'))
Ecorr_test = np.einsum('xacd,Abxa->Abcd',tmp1,tmp2)

不幸的是,它会导致不同的结果。

谁能帮助我了解上面 einsum 的幕后发生了什么以及我做错了什么?

标签: pythonnumpy

解决方案


推荐阅读