-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
📝 convert nodes_id to edges_id and convert back #102
Comments
上面添加了一个更新,经过校验,张潘用的节点收缩顺序,与我们不同。 按照要收缩的边两端的点的序号 47以及70 ,我们查找 节点连接的无向图,发现这两个点不相连。于是推测我们用的 点的编号不一致。(可我们的点的编号用的就是 sycamore 他们官方提供的编号 方案,而不是我们自己的编号) 经过后面的检查,我发现是因为 他们给收缩后的节点一个新的编号,而我们给收缩后的节点的编号沿用了收缩前的任意一个节点,因此在查找节点相连情况时 出错。(2023-04-14 16:03:48)请注意:
所以会有以下 IndexError
他们论文的张量收缩方式,和他们代码的不一样,下面尝试了他们代码的收缩方式,依然有相同的错误:
下面是第三个收缩方式,依然有错:
|
I offer another version to try out |
The reason for the error may be the use of open quantum bits in their method, which requires a reduction in the number of tensor from 381 to 345, possibly leading to a numbering inconsistency problem between us and them. |
这里写一下,如何校验 节点收缩顺序。 下面的函数,根据 节点收缩list
输入以下
出现报错,以及log信息:
解读第一个张量收缩过程:
继续解读下一个张量收缩过程,发现出错了这不是因为用户提供的
|
问题已经解决,是我的 转换代码有问题。
对于上面的输入,它有以下输出
|
经过检查,我们发现了第二个错误: 代码路径是
如上面代码所示,我看了他们 opt_einsum 的源代码,把他们每一次收缩的乘法次数print出来,整理到 excel 表格里 蓝色的是他们的正确结果,红色的是我们的,每一次的计算都相差 2**1 我们初始化的时候,给每个节点它自己多送了一个 2 ** 1 标记,然后在计算重复的乘法时,我们要减去 被 bool_ary 标记出来的 节点,然后多减了它自己。 因此,一行代码就能修复
跑出来的结果是:
我们的结果当前能精确到有效数字7位,我可以继续改进,这就和这个 issue 无关了。 精度和下面的代码有关,下面的代码为了用 float64 计算更大的数值,减去了
|
以下提供一种缓慢但是完全不损失精度的计算方法
代码是:
|
重要补充:
下面讨论的 +1,其实是最终的乘法次数 +
检查过程:
如下方截图所示:收缩 编号 32 和 编号 9 的这两个节点 产生的乘法次数被记录在第一行,其中左列是 opt_einsum 的结果,右列是 我们TensorNetworkEnv 的结果。 |
我在本地对上述过程进行了二次核验,确实存在opt_einsum计算错误的问题 |
仿真环境需要一个功能:
把储存了节点收缩顺序的list,从 记录两个节点收缩顺序,到记录这两个节点对应的边的收缩顺序。
见代码
TNCO_env.py
中的:先创建仿真环境这个类,选择想要转换的电路
下面演示了把
edge_ary
转化成node2s
转化回edge_ary
的过程,调用了两个函数:node2s = env.convert_edge_sort_to_node2s(edge_sort=edge_ary.argsort(dim=0))
edge_sort = env.convert_node2s_to_edge_sort(node2s=node2s).to(device)
输出是:(在这个电路下,
nodes_list, ban_edges = NodesSycamoreN12M14, 0
)The text was updated successfully, but these errors were encountered: