Tensorflow警告:图表无法按拓扑顺序排序?

THN*_*THN 10 python warnings neural-network deep-learning tensorflow

当我运行tensorflow训练时(使用自定义图形,闭源),它会输出警告:

2018-10-03 14:29:24.352895:E tensorflow/core/grappler/optimizers/dependency_optimizer.cc:666]迭代次数= 0,拓扑排序失败并显示消息:图形无法按拓扑顺序排序.

这是什么意思?什么可能导致这个问题以及如何避免它?

更新:对于记录,在我的情况下,tensorflow尽管有此警告仍然可以正常工作.所以我认为这只意味着计算图中有比tensorflow预期更多的循环,不一定是无限循环.我通过避免在代码中使用手动循环来修复此问题,而是使用张量操作(stack, concat, slice, reshape...)

pir*_*iri 6

拓扑顺序的有向图的是其以这样的方式顶点的排序,每当存在来自顶点的边缘u到顶点v,顶点u来顶点之前v的顺序。

这种排序适用于每个有向无环图,但不适用于任意图。您的图中很可能存在某种阻止排序算法成功的循环。因此,要走的路是搜索循环并以某种方式将其删除。

例如,考虑一个非常小的图,它有两个顶点uv,以及两个边u -> vv -> u。没有办法按照上面给出的要求对 u 和 v 进行排序。

如果没有关于您的代码的更多信息,就很难确切地说出发生了什么。

  • 但它在 `tensorflow` 中具体是什么?计算图不能是循环的,否则它将永远循环。为什么 `tensorflow` 输出这个警告并且仍然能够训练?`tensorflow` 如何打破循环? (4认同)
  • 如果图是拓扑排序的,则无需进一步的依赖性检查即可直接以正确的顺序进行计算。因此,拓扑排序很可能是一种优化,正如您更新的错误消息中所指示的那样。 (2认同)