You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch einsum最优路径复杂度及自定义层反向传播选型

张量收缩的最优路径与反向传播相关问题

问题背景

我需要执行如下张量收缩操作:

np.einsum('ijk,kl,jlm', x, y, z, optimize = 'optimal')

通过Numpy测试发现,针对我的数据,最优路径几乎始终是先收缩k维度,再收缩j维度,最后收缩l维度。我希望让PyTorch自动寻找最优路径,但查阅文档看到:

当输入张量至少为3个时会触发该优化,否则顺序不影响。需注意,寻找最优路径是NP难问题,因此opt_einsum依赖不同启发式算法得到近似最优结果

关于最优路径的疑惑

我尚未完全理解最优路径的本质,有以下疑问:

  • 为什么寻找张量收缩的最优路径是NP难问题?它本质上等价于排序算法吗?
  • 是哪些因素(比如张量数量、收缩次数、总索引数)导致其复杂度呈非多项式缩放?

反向传播的实现选择

此外,我要将该结构整合到自定义PyTorch层中,可学习参数存储在张量z中。为便于反向传播,我是否应该将乘积拆分(即PyTorch中等价于如下代码的操作):

np.einsum('ijk,jkl', np.einsum('ijk,kl', x, y, optimize = 'optimal'), z, optimize = 'optimal')

还是应该坚持使用自动寻找的最优路径?

内容的提问来源于stack exchange,提问作者DPurple

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 18:37:06