网络化简
先根据 index 结构确定部分收缩步骤,再在较小的网络上搜索后续路径。
本页目录
化简做什么
网络化简根据 index 结构预先确定一部分收缩步骤,使后续搜索处理的张量更少。这里的化简是结构预处理:它记录哪些张量可以先合并,不读取或计算实际数组。数值执行时,仍需完成这些预先确定的收缩步骤。
simplify 主要检查以下规则:
| 张量当前保留的不同 index 数量 | 处理方式 |
|---|---|
| 0 | 与当前 index 最少的另一个张量合并 |
| 1 | 与共享该 index 的张量合并 |
| 2 | 尝试与邻居合并,结果的 index 数量不得超过该邻居 |
输出 index 或仍被其他张量使用的 index 不会消去。这些规则不涉及低秩分解或奇异值截断。
化简后怎样搜索
prefix, reduced, map = 化简输入网络
reduced_path = 在 reduced 上搜索收缩路径
path = 将 reduced_path 的编号映射回原网络,并接到 prefix 后
stats = 在原网络上校验 path 并计算指标
return path, stats
化简保持原收缩表达式,但会预先固定部分收缩步骤,因此可能改变后续搜索得到的路径。
化简结果
prefix 保存已确定的 SSA 步骤;reduced 是缩减网络;map 记录缩减网络输入对应的原网络节点。stitch 负责将后续路径接回原网络。
接口
simplify 和 stitch 可分别调用;random_greedy_simplified 包含化简、随机贪心、路径拼接及指标计算。Python 的 arctn_simplify 返回化简后的结构信息,不执行数组。参数见 Rust API和 Python API。