能否反转numpy einsum操作,从psi1、psi2还原psi4d?
能否通过psi1和psi2还原四维张量psi4d?
首先拆解两个einsum操作的实际计算逻辑:
psi1 = np.einsum('jqik->ij', psi4d):对psi4d的第1位(q)和第3位(k)维度求和,最终得到二维矩阵,对应关系为psi1[i,j] = sum_{q,k} psi4d[j, q, i, k]psi2 = np.einsum('kiqj->ij', psi4d):对psi4d的第0位(k)和第2位(q)维度求和,最终得到二维矩阵,对应关系为psi2[i,j] = sum_{k,q} psi4d[k, i, q, j]
核心结论:无法仅通过psi1和psi2还原出原四维张量psi4d
原因如下:
- 信息严重丢失:假设psi4d的每个维度大小为n,原张量包含n⁴个独立元素;而psi1和psi2各只有n²个元素,总共仅2n²个元素。当n≥2时,2n²远小于n⁴,降维求和过程中丢失了绝大多数原始信息,无法通过现有数据反向补全。
- 欠定问题无解:从两个二维矩阵还原四维张量属于数学上的欠定问题,存在无穷多组可能的解,不存在唯一的原psi4d对应给定的psi1和psi2。
对尝试失败的解释
你遍历ijkq的所有排列组合,用psi4dreconstruct = np.einsum(s1 +','+ s2 + '->' + sr, psi2, psi1)重构张量,本质是试图用低维信息反向生成高维信息——但丢失的维度信息没有任何途径可以从psi1和psi2中获取,自然无法得到与原psi4d一致的结果。
可能的解决方向
如果需要还原原张量,必须补充额外条件:
- 原psi4d具备特定结构特性(如稀疏性、对称性、张量分解形式等)
- 增加更多不同维度投影的einsum结果,缩小解空间
内容的提问来源于stack exchange,提问作者Luis ALberto
相关产品推荐
相关产品推荐

