当我运行tensorflow
training(使用自定义图、闭源代码)时,它输出警告:
2018-10-03 14:29:24.352895: E tensorflow/core/grappler/optimizers/dependency_optimizer.cc:666] Iteration = 0, topological sort failed with message: The graph couldn't be sorted in topological order.
这是什么意思?什么可能导致这个问题以及如何避免?
更新:对于记录,在我的情况下,tensorflow
仍然可以正常工作,尽管出现此警告。所以我认为这只是意味着计算图中的循环比tensorflow
所期望的要多,而不一定是无限循环。我通过避免在代码中使用手动循环来解决这个问题,而是使用张量操作(stack, concat, slice, reshape...
)
有向图的topological ordering是其顶点的一种排序方式,使得每当有一条从顶点
u
到顶点v
的边时,顶点u
都在排序中的顶点v
之前。这种排序对于每个有向无环图都是可能的,但对于任意图则不可能。图中很可能存在某种循环,阻止排序算法成功。所以,我们要做的就是寻找循环并以某种方式移除它。
例如,考虑一个非常小的图,它有两个顶点,
u
和v
,两个边,u -> v
和v -> u
。无法根据上述要求对u和v进行排序。如果没有关于代码的进一步信息,很难确切地说出发生了什么。
相关问题 更多 >
编程相关推荐