tensorflow 由于LoweringFunctionalOps传递引起的名称冲突错误

axkjgtzd  于 4个月前  发布在  其他
关注(0)|答案(4)|浏览(42)

系统信息

  • TensorFlow版本:2.5.0
  • Python版本:3.6
    当前行为描述

当在非CPU/GPU设备上运行tensorflow/tensorflow/blob/master/tensorflow/python/kernel_tests/functional_ops_test.py中的testSkipEagerCaseLoweringPreservesNameForFetch测试时,由于TF中的命名冲突,测试会失败。错误信息为:“Invalid argument: Node 'Case/branch_index/_3' is not unique”。
在LoweringFunctionalOps过程中,Case节点被替换为一个包含名为'Case/branch_index/_3'的_SwitchN节点的图,该节点的输入名为'Case/branch_index/'。稍后,在图形划分过程中,会在Const输入和恰好获得名为'Case/branch_index/_3'的_SwitchN节点之间添加一个_Send节点,从而引发冲突。
以下是情况的示意图:

  • 你是否想提交PR?(是/否):否
bsxbgnwa

bsxbgnwa1#

你好!你能稍微详细说明一下复现条件吗?具体来说,你说在functional_ops_test.py上"在非CPU/GPU设备上"无法通过测试--我们可以尝试特定的设置吗?谢谢!

uujelgoq

uujelgoq2#

这个问题已经被自动标记为过时,因为它没有最近的活动。如果没有进一步的活动发生,它将被关闭。谢谢。

waxmsbnn

waxmsbnn3#

你好,

很遗憾,我无法为您提供一个特定的设置来重现这个问题,但是我可以为您提供预先划分和后划分的图形,您可以在其中看到问题是如何展开的。(这些是.pbtxt文件,由于某种原因无法在这里上传.pbtxt文件)
before.txt
after.txt
在after.txt图形中,如果您查找'Case/branch_index/_3',您将看到两个具有该名称的节点:一个_SwitchN和一个_Recv。
您可以尝试的一个方法可能是将_SwitchN放在CPU上,这个在GPU上无法重现的原因是,_SwitchN和它之前的Const都被放在了GPU上,所以没有添加_Recv。
希望这能给您带来帮助,如果您需要任何额外的信息,请告诉我!

k4ymrczo

k4ymrczo4#

如果你在除CPU或GPU之外的其他设备上执行测试,同样的问题也出现在同一个文件中的"testCaseLowering"测试中。

相关问题